视差脚本在chrome和移动设备上延迟
Parallax script gets laggy in chrome and on mobile devices
我用这段代码为我正在创建的一个网站制作视差效果,在safari和firefox(mac)中效果很好。但在chrome(mac)中,它会出现延迟,我在iPad和iPhone 6上尝试时也是如此。
Javascript: var ypos,image;
function parallax() {
image = document.getElementById('bgImage');
ypos = window.pageYOffset;
image.style.top = ypos * .4+ 'px';
}
window.addEventListener('scroll', parallax),false;
html: <img class="img-responsive" id="bgImage" src="images/bgtopg.jpg">
</div>
<div id="box1" class="content">
<h1>Heading</h1>
<p>Lorem ipsum dolor sit amet.....</p>
</div>
(img-responsive - from bootstrap)
css:#bgImage {
position: relative;
z-index: -1
}
你知道是什么导致了滞后效应吗?
怎么回事
javascript事件的'Laggy'行为是一个常见的问题。本质上,你遇到的是重载事件堆栈。它堆积得如此之高,以至于产生了波浪状的效果。
<标题> 你的选项这个问题的解决方法有两个方面。您可以选择硬件加速或脱机的路径。卸载应该是你的第一个解决方案,当你确认你不是简单地重载你的脚本时,应该使用硬件加速。
揭穿那个混蛋!
// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after it stops being called for
// N milliseconds. If `immediate` is passed, trigger the function on the
// leading edge, instead of the trailing.
document.addEventListener("DOMContentLoaded", function(event) {
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
var myEfficientFn = debounce(function() {
console.log("HEY STOP MOVING ME AROUND!");
}, 25);
window.addEventListener("mousemove", myEfficientFn),false;
});
Move your mouse around a whole lot and look at your console.
我们有加速的技术!
https://stackoverflow.com/a/15203880/1596825 标题>你可以尝试用translateY做视差动画效果,而不是操纵图像的顶部样式。这是Paul Irish的一篇很棒的文章,它描述了为什么你应该做翻译而不是上/左/右/下。
所以不是:
image.style.top = ypos * .4+ 'px';
你可以这样做:
image.style.webkitTransform = 'translateY(' + ypos * .4 + 'px)';
image.style.transform = 'translateY(' + ypos * .4 + 'px)';
祝你好运,如果有帮助,请告诉我! 相关文章:
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- FabricJs-限制主对象内添加对象的移动区域
- 如何减少在移动网络应用程序上播放声音的延迟
- 移动设备上的 HTML 5 音频 .play() 延迟
- 在定时器/延迟的画布上移动不同的图像
- JavaScript 移动延迟和多次击键
- 如何无延迟地处理 100 多个移动矩形
- 在大多数移动浏览器上,图像仅在出现重大延迟后才会更改
- JavaScript DOM 在 touchmove 中的更改延迟到移动 Safari 上的滚动结束
- 在移动浏览器上播放 HTML5 音频文件时出现延迟
- Raphael JS:延迟后沿着路径移动图像
- 移动Safari (iPhone)对Javascript GET请求有30秒以上的延迟
- 在移动设备上使用jcarousel框架时,在pageshow()事件上延迟几秒钟
- 触摸移动和触摸启动以及300ms延迟
- 如何调整Mootools拖动.移动类,使其在px中没有初始延迟
- 移动设备中的滚动事件触发延迟
- 视差脚本在chrome和移动设备上延迟