我怎么知道HTML元素是否在屏幕上呈现?

时间:2014-08-10 23:13:24

标签: javascript html css css3 rendering

一旦页面向下滚动足以让它可见,我想要一个元素来做一个CSS3动画,我想知道是否有任何方法可以实现这一点。任何涉及JavaScript或CSS的东西都可以。我做了很多Google搜索和Stackoverflow搜索,但找不到我需要的内容。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

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

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;

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

答案 2 :(得分:0)

将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';
  }
}