在javascript中实现固定位置会导致Safari滚动时抖动
Implementing fixed position in javascript causes jitter in Safari when scrolling
固定位置不适合我的用例,因为它固定到浏览器窗口,您可以进入文本离开屏幕到右侧的状态,您无法到达它。无论如何,我尝试使用绝对定位,然后在javascript中调整"顶部"。它在firefox和Chrome中工作得很好,但在Safari中,当你滚动时,内容会抖动。
http://jsfiddle.net/Z8UFE/4/<div class="fixed sticky" data-offset-top="50"><p>fixed</p></div>
$(document).ready(function() {
var documentHeight = $(document).height();
$(document).scroll(function() {
var scrollTop = $(window).scrollTop();
$(".sticky").offset(function() {
$this = $(this);
var offsetTop = $this.data("offset-top");
if (scrollTop < 0) {
scrollTop = 0;
}
var newTop = offsetTop + scrollTop;
if (newTop < offsetTop) {
newTop = offsetTop;
}
// Prevents document from infinitely expanding.
var maxTop = documentHeight - $this.height();
if (newTop > maxTop) {
newTop = maxTop
}
// Prevents a bit of jitter since the current offset can be
// not precisely the initial offset. 338 Vs. 338.12931923
var currentTop = $this.offset().top;
if ( Math.abs(currentTop - newTop) >= 1 ) {
return { top: newTop }
} else {
return {}
}
});
});
})
我想我明白你想达到的目的。
如果你在元素上保持固定的位置,并使用javascript/jquery将其水平重新定位,你可以保持平滑的垂直滚动,并允许它也保持其水平定位:
$(function() {
var $sticky = $('.sticky');
var target = 800;
$(document).scroll(function() {
var left = $(window).scrollLeft();
var adj = target - left;
$sticky.css({left: adj});
});
});
使用scrollLeft()它是scrollTop()的水平对应
http://jsfiddle.net/Z8UFE/18/相关文章:
- Safari(Mac OS)上的jQuery平滑滚动问题
- 向下滚动时隐藏菜单,向上滚动时显示,适用于Chrome,不适用于Safari(手机)
- 滚动到顶部按钮在 chrome 或 safari 中不起作用
- 移动Chrome和Safari之间的页面滚动不一致
- 移动safari浏览器的滚动问题
- 使用D3.js生成的SVG图形在Safari中滚动时消失
- iOS Safari过度滚动:下拉与弹跳
- 滚动停止视差效果在 Safari 中不起作用
- 移动 Safari 垂直滚动 - 如何在 Javascript 中检测窗口何时停止移动
- JavaScript DOM 在 touchmove 中的更改延迟到移动 Safari 上的滚动结束
- 滚动到顶部按钮,jQuery在Safari v.7.0.5中不起作用
- Safari 中的侧边栏滚动粘性问题
- 为什么在用户滚动后,设置超时不会在触摸端处理程序中触发(iOS Safari)
- 滚动时隐藏移动Safari中的地址栏(touchOverflow)
- 在iPhone上的Safari中滚动到特定位置
- Safari滚动故障
- jQuery.remove()的Safari滚动问题
- 在javascript中实现固定位置会导致Safari滚动时抖动
- 如何检测iOS7 Safari滚动时的高度变化- JavaScript
- 移动Safari滚动到底部加载更多的内容,如Facebook