为滚动元素制作动画
Animate element on scroll
我想在用户滚动页面时为div设置动画。
为此,我实现了以下代码:
var slide = jQuery(".apresentacao-spc-01");
var opening = false;
var closing = false;
var pos = jQuery(window).scrollTop();
jQuery(window).scroll(function() {
var pos = jQuery(window).scrollTop();
console.log(pos);
if (pos > 100) {
if (!opening) {
opening = true; closing = false;
slide.stop().animate({
'opacity': 1,
'margin-left': '0px'
}, 700, function() {
opening = false;
});
}
} else {
if (!closing) {
closing = true; opening = false;
slide.stop().animate({
'opacity': 0,
'margin-left': '-1000px'
}, 500, function() {
closing = false;
});
}
}
});
问题是:使用"if(pos>100){",如果用户分辨率足够大,可以在他需要滚动之前显示元素,那么除非他开始滚动页面,否则他不会看到元素。
我的问题是:如何获取元素可见时将执行的滚动动画?
我的意思是:如果元素在页面加载时可见,动画会自动启动。。。如果元素在页面加载时不可见,动画将等待滚动到达元素开始。。。
谢谢。
你可以做一些不同的事情。我的第一个想法是用这样的东西查询视口的高度:
var viewportWidth = document.documentElement.clientWidth
, viewportHeight = document.documentElement.clientHeight
然后,如果它比元素向下的距离高,则触发动画。
一个更动态的解决方案是使用一个功能,自动检查元素是否在视口中,这样,如果你更改了页面上的内容,你就不需要担心调整高度:
function isElementInViewport (el) {
var rect = el.getBoundingClientRect();
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */
rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */
);
}
这一回应值得称赞。提供的链接中有一个使用指南和更多信息。祝你好运
相关文章:
- 我需要在javascript if语句中使用jquery来动画元素的颜色
- 添加/删除类和动画元素的不同方法
- 悬停时动画元素的 JavaScript 问题
- 动画元素不会在悬停时更改样式
- 在jquery中使用索引动画元素
- 应该为“容器”元素和“动画”元素分配什么位置属性?HTML CSS JavaScript.
- 动画元素角度不消失
- JS获取动画元素的当前位置
- jQuery幻灯片和停止问题:动画元素随着鼠标的快速移动而冻结
- 在视图中检测动画元素
- 鼠标悬停和鼠标移出不触发动画元素
- jQuery动画元素和隐藏
- 当你向下滚动然后向上滚动时如何动画元素
- 当动画元素接触鼠标时触发mouseenter
- 使用滑动回调和Jquery动画元素在幻灯片
- 我如何动画元素存储在一个数组?除了我徘徊在上面的那个
- 引导工具提示跟随动画元素
- 点击动画元素
- 使用jQuery动画元素并调用stop()
- 如何显示动画元素时,它是在查看区域