在OSX Safari(适用于Chrome/Firefox)上,滚动事件期间的CSS定位无响应和抖动
CSS positioning during scroll event unresponsive and jittery on OSX Safari (works in Chrome/Firefox)
我在我的网站上有一个粘性边框,在窗口的滚动事件期间,我更新它,当用户滚动时跟随窗口。
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上也能顺利更新吗?
使用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)'
});
});
相关文章:
- 如何对CSS transitionEnd事件后执行的JavaScript进行单元测试
- 单击css动画后丢失的事件
- 在事件目标上,将css波浪号从element1添加到element2
- 事件侦听器 / CSS 伪类出现时滚动条
- CSS 溢出边界半径鼠标事件
- 从 CSS 切换按钮触发 Jquery 事件
- CSS + jQ插件阻止AJAX调用/事件侦听器工作
- 如何在 iPhone 上打开启用了 CSS 事件的 HTML 文件
- 如何使用javascript、jquery、html和css制作基本的事件日历
- CSS Javascript在1 onClick上处理2事件
- 使用AngularJS 1.2和angular animate在CSS Transition上完成事件
- jQuery在animate on click事件后增加css属性的值
- javascript jquery css事件侦听器
- 无法让悬停事件使用 jQuery UI 持续时间参数或 CSS 处理目标元素的同级元素
- 纯JavaScript中的Onclick滑块 - 事件不会改变CSS值
- 如何在 iOS 设备上使用 JavaScript(或 CSS)添加点击事件
- 更改我正在侦听的事件Javascript的对象的CSS
- JS单击事件不适用于暂停CSS动画
- 仅对 CSS 类下的一个按钮执行单击事件
- Javascript 更改为元素的指针事件 CSS 属性