[英]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动画样式放在一个类中,但在将其完全滚动到视图中之前,请勿将其分配给您的元素。
假设您的元素的id
为sprite
,这应该可以帮助您:
<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.