javascript - OSX Safari 上滚动事件期间 CSS 定位无响应且抖动(适用于 Chrome/Firefox)

标签 javascript html css scroll safari

我的网站上有一个粘性边框,在窗口滚动事件期间,我将其更新为在用户滚动时跟随窗口。

CSS:

.fixed {
    position: relative;
    background: black;
    color: white;
    height: 40px;
}
.container {
    height: 2000px;
}

HTML:

<div class="container">
    <div class="fixed">Fixed</div>
</div>

JS:

$(window).scroll( function() {
    $('.fixed').css({top: $(window).scrollTop()});   
});

演示:https://jsfiddle.net/xt8c00yq/

我知道滚动事件在移动浏览器上不可靠且无响应,因此我已经在设备上禁用了它。然而,桌面版 Safari 似乎也显得迟缓和紧张。它在 Chrome 和 Firefox 上都运行良好。在两种浏览器上测试演示以亲自查看。

是否有任何已知的技巧可以使其在 Safari 上顺利更新?

(位置:固定不是一个选项,因为它需要响应未固定的同级 css 转换而流动)

最佳答案

使用 translate3d 进入硬件加速渲染。

$(window).scroll( function() {

    scrolled = $(window).scrollTop();   

    $('.fixed').css({
        '-webkit-transform' : 'translate3d(0,' + scrolled + 'px,0)',
        '-moz-transform'    : 'translate3d(0,' + scrolled + 'px,0)',
        '-ms-transform'     : 'translate3d(0,' + scrolled + 'px,0)',
        '-o-transform'      : 'translate3d(0,' + scrolled + 'px,0)',
        'transform'         : 'translate3d(0,' + scrolled + 'px,0)'
    });

});

关于javascript - OSX Safari 上滚动事件期间 CSS 定位无响应且抖动(适用于 Chrome/Firefox),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32906817/

相关文章:

html - 透明文本框 basemap

php - 位于页面右侧的左对齐文本有问题吗?

javascript - 当在字符序列末尾添加空格时,为什么此正则表达式会失败?

javascript - 使用猫头鹰轮播在触摸设备上滑动时禁用垂直滚动

html - Bootstrap .thumbnail 类正在添加神秘的顶部填充,仅限移动设备 - 但我无法理解为什么

Javascript 模糊,密码输入不起作用

html - CSS透明金色背景

javascript - Reactjs:在 <tr> 标签内显示数组数据

javascript - 如何在 socket.io 服务器中调用 Node api 响应

javascript - 将 ng-repeat-start 和 ng-repeat-end 与 2 个不同的对象一起使用