【发布时间】:2018-07-24 08:22:21
【问题描述】:
我为一些元素(矩形和圆形)创建了视差脚本,所以当我从上到下滚动时,元素应该移到顶部
元素起始位置直接使用添加到HTML中 问题是当我向后滚动元素时向下移动,但当我到达页面顶部时它们不在相同的起始位置。
HTML:
<img style="top: 62%; left: 46.3%;" class="l-parallax_item" src="./path/to/img">
<img style="top: 74%; left: 42.7%;" class="l-parallax_item" src="./path/to/img">
CSS: 父级有相对位置,l-parallax_item 是绝对位置
JS:
var parallaxElements = document.getElementsByClassName("l-parallax_item");
var lastScrollTop = 0;
window.onscroll = function() {
var st = window.pageYOffset || document.documentElement.scrollTop;
if (st > lastScrollTop){
console.log("bottom");
for(i = 0; i < parallaxElements.length; i++) {
var position = parallaxElements[i].offsetTop;
var movePx = parallaxElements[i].getAttribute("data-px-per-scroll");
parallaxElements[i].style.top = (position - parseInt(movePx))+"px";
}
} else {
console.log("top");
for(i = 0; i < parallaxElements.length; i++) {
var position = parallaxElements[i].offsetTop;
var movePx = parallaxElements[i].getAttribute("data-px-per-scroll");
parallaxElements[i].style.top = (position + parseInt(movePx))+"px";
}
}
lastScrollTop = st <= 0 ? 0 : st; // For Mobile or negative scrolling
}
我注意到当我从上到下滚动时,我会收到更多的 console.log("bottom") 消息。 * 当我滚动顶部 > 底部时,反之亦然。 所以我想这就是为什么当我进入底部>顶部时元素不在同一位置的原因。
我该如何解决这个问题?
编辑:http://jsfiddle.net/r9751p8q/6/ 尝试滚动到底部然后返回,您会看到某些元素消失了
【问题讨论】:
-
可以把html和css上传到jsfiddle.net
-
请查看我刚刚用链接更新的帖子
标签: javascript html css parallax