为什么我的图像在执行这个视差脚本时跳了几个像素
Why does my images jump a few pixels when executing this parallax script?
我不是javascript的家伙,所以我真的不明白为什么我的代码这样做:
当第一次加载页面并滚动时,目标图像向上下移约30px
var parallax = document.querySelectorAll(".headerphotosmall, .headerphoto"),
speed = 0.9;
window.onscroll = function(){
[].slice.call(parallax).forEach(function(el,i){
var windowYOffset = window.pageYOffset,
elBackgrounPos = "50%" + (windowYOffset * speed) + "px";
el.style.backgroundPosition = elBackgrounPos;
});
};
视频显示我的问题:https://i.gyazo.com/040f328ac78a5d5243e37352e19e0cf6.mp4
我认为@BeyelerStudios的评论解释了这个问题…图像的初始位置与初始滚动位置无关。
我不知道什么是视差,虽然…
因为我不知道你的CSS,我试图自动更新你的视差图像的位置时,脚本运行,与Array#forEach
循环。如果稍后声明这些背景图像,则需要等待页面加载。
var parallax, speed;
var updateBgImagePos, updateParallaxPosition;
// Converts parallax HTML collection to
// Array
parallax = [].slice.call(
document.querySelectorAll(".headerphotosmall, .headerphoto")
);
speed = 0.9;
updateBgImagePos = function(el, i) {
var windowYOffset = window.pageYOffset,
elBackgrounPos = "50%" + (windowYOffset * speed) + "px";
el.style.backgroundPosition = elBackgrounPos;
};
updateParallaxPosition = function() {
parallax.forEach(updateBgImagePos);
};
window.onscroll = updateParallaxPosition;
// If your script is declared later than the images,
// you don't need to wait the page to load to
// get/modify them.
updateParallaxPosition();
相关文章:
- 画布-在多个画布叠加中获取像素颜色
- 如何使文本字段中的文本光标以几像素开始
- 我将如何在一个网页上放置多个Facebook跟踪像素
- 不像同时有几个Facebook粉丝页面
- 滑动上的几个事件?有点像滚动事件
- j查询窗口滚动事件.每滚动 XX 个像素
- 获取图像的第一个像素颜色(JS/jQuery)
- 当适合设备的绝对视图在移动设备中向右移动几个像素时,我如何防止双击缩放
- 在滚动95个像素后,显示固定在页面顶部的Div
- 添加类时,粘性导航会跳过几个像素
- 多个自定义访问群体在同一页面上重新定位像素
- 通过Three.js中的getImageData像素颜色数据循环生成多个立方体
- 为什么我的图像在执行这个视差脚本时跳了几个像素
- 找出两个元素的起始点之间有多少像素
- 我可以用一个图像像素调用多个跟踪像素吗
- jQuery,如果窗口滚动了X个像素做这个,否则如果窗口滚动了XX个像素做别的
- 使用asp.net MVC在图片上选择一个或多个像素
- 如何连锁播放几个HTML5音频文件像一个流畅的播放列表
- 是否可以使用jQuery/javascript每隔x个像素重复放置一个DIV
- 从jQuery的高度()减去几个像素