javascript - 使用 jQuery 高效创建简单的视差效果

标签 javascript jquery parallax

因此,对于我的一个新项目,我决定为滚动上的一些背景图像编写一个 super 简单的视差脚本。这就是我想到的:

$(document).ready(function(){
  parallaxScroll();
  $(window).bind('scroll', function() {
    parallaxScroll();
  });
});

function parallaxScroll() {
  $(".parallax").each(function() {
    if($(this).hasClass('reverse')) {
       $(this).css("background-position","center " + (($(this).offset().top - $(window).scrollTop())/2) + "px");
    } else {
       $(this).css("background-position","center " + (($(this).offset().top - $(window).scrollTop())/-2) + "px");               
    }
  });
}

我的问题是,这足够高效吗?如果不够,是否有更好的解决方案?我不确定使用 .each() 是否最有利于性能,但它似乎工作得很好。我在文档加载时运行该函数的原因是,当您第一次滚动页面时,背景图像不会跳转。

最佳答案

考虑使用 animate 代替立即设置值的 css。它使用计时器/requestAnimationFrame 推迟设置值,确保您的动画不会阻塞 UI、异步(与其他代码伪并行运行),并确保动画流畅。

关于javascript - 使用 jQuery 高效创建简单的视差效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24705387/

相关文章:

javascript - 如何在 HTML JS 中获取外部文本

javascript - 尝试运行 Mocha 测试时 require.context 不是函数

javascript - HTML:动态修复用户正在阅读的标题和副标题在顶部

javascript - 根据浏览器显示不同的 html 元素。 HTML5 Safari 自动播放按钮

javascript - 监听对 div 的点击,但不监听其任何子项被点击

javascript - AJAX调用在html div中显示api键和值

ios - 有没有办法在 iPad 上为表单启用视差?

jquery - Parallax 在 Firefox 和 ie 中不起作用

jquery - 视差一页网站菜单栏

javascript - 解析来自 Socket 的 HTTP 消息