javascript - 滚动时视差滞后的网页

标签 javascript jquery html css parallax

我目前正在开发 web page在标题和网站的其他三个部分上具有滚动视差效果 (Stellar.js):但是,滚动它们会导致延迟,尤其是在页面顶部。

我已经尝试过使用压缩来减小背景图像的大小,但是并没有太大的区别;移除模糊效果也没有解决问题(它确实减少了延迟,但仍然不够平滑)。

该网站在 Firefox (W10) 上运行良好,几乎没有掉帧,但在 Chrome(Windows 和 OS X)和 Safari 上有相当大的延迟。

有几个 JS 滚动触发的脚本在运行,但我不知道这些是否可能是原因。有什么建议吗?

最佳答案

您要做的是限制滚动事件。去抖动事件意味着一个事件在一定时间后才能再次触发。节流事件意味着事件在每个时间段内只能触发这么多。

这是限制事件的函数(来源:http://sampsonblog.com/749/simple-throttle-function)

// Create the listener function
function throttle (callback, limit) {
    var wait = false;                 // Initially, we're not waiting
    return function () {              // We return a throttled function
        if (!wait) {                  // If we're not waiting
            callback.call();          // Execute users function
            wait = true;              // Prevent future invocations
            setTimeout(function () {  // After a period of time
                wait = false;         // And allow future invocations
            }, limit);
        }
    }
 }

要使用它,只需执行如下操作:

function callback () {
    console.count("Throttled");
}

window.addEventListener("scroll", throttle( callback, 200 ));

关于javascript - 滚动时视差滞后的网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35106609/

相关文章:

javascript - 如果选中将值添加到数组,则 react 复选框

javascript - 如何在 JavaScript 中有选择地定义/声明对象的键?

javascript - 我怎样才能对这段代码进行按键操作?

jquery.ajax 发布请求以从应用引擎服务器获取数据

html - Webkit 与 Firefox 背景位置和背景附件

javascript - 如何获取点击控件的所有html内容?

javascript - React 组件自动绑定(bind)

javascript - 将 URL 加载到 CSS 动画滑动 iframe

javascript - Bootstrap 模态 - 添加嵌入 PDF 的对象标签

html - 我想使用 bootstrap4 在列的顶部添加一个 10 px 的边框