繁体   English   中英

如何判断屏幕上是否呈现HTML元素?

[英]How might I tell if an HTML element is being rendered on the screen?

我希望元素在页面向下滚动到足以使其可见后执行CSS3动画处理,并且我想知道是否有任何方法可以完成此操作。 任何涉及JavaScript或CSS的东西都可以使用。 我已经做了很多Google搜索和Stackoverflow搜索,但找不到我真正需要的东西。

根据布局的复杂程度,它可能很简单,例如查找滚动位置,窗口的高度以及元素在页面上的位置。

function scrollEvent() {
  var el = document.getElementsByTagName('a')[0];
  var body = document.getElementsByTagName('body')[0];
  var posY = (window.innerHeight + body.scrollTop) - el.offsetTop;
  var onScreen = (posY > 0 && posY < window.innerHeight) ? true : false;
}

window.onscroll = scrollEvent;

如果您担心水平定位,也可以使用相同的技术。

将您的CSS3动画样式放在一个类中,但在将其完全滚动到视图中之前,请勿将其分配给您的元素。

假设您的元素的idsprite ,这应该可以帮助您:

<style>
  .animate {
    //CSS3 animation style
  }
</style>

window.onscroll= function() {
  var sprite = document.getElementById('sprite');
  if(sprite.getBoundingClientRect().top>=0 && sprite.getBoundingClientRect().bottom<=window.innerHeight) {
    sprite.className= 'animate';
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM