10
我在使用jQuery制作粘性标题时遇到了特定的问题。我尝试了网络上常用的片段,但我在各处都看到了同样的bug。粘性标题 - 滚动跳跃的越野车
在特定的文档高度(可滚动直到超过要求的粘性效果),粘性标题在position: fixed
和position: static
之间跳跃。
HTML:
<header>
<div id="not-sticky"></div>
<div id="sticky"></div>
</header>
<div id="content"> ...
的jQuery:
var $sticky = $("#sticky");
var offset = $sticky.offset();
var stickyTop = offset.top;
var windowTop = $(window).scrollTop();
$(window).scroll(function() {
windowTop = $(window).scrollTop();
if (windowTop > stickyTop) {
$sticky.css({
position: 'fixed',
top: 0
});
}
else {
$sticky.css({
position: '',
top: ''
});
}
});
CSS:
header {
width: 100%;
}
#not-sticky {
padding: 50px 0;
width: 100%;
}
#sticky {
padding: 24px 0;
position: relative;
width: 100%;
z-index: 25;
}
我也尝试了#not-sticky
的边缘底部,其高度与#sticky
相同,以保持文档高度不变,但发生同样的跳跃粘性效果。
任何想法来解决这个问题?
谢谢你,很好!我希望如果没有包装div来保持一个干净的标记是可能的,但我会承担这一点。 – 2013-05-13 02:11:24
@TimoM不客气!我创建了一个可重用的函数,以便您可以在DOM ready,window load等任何需要的地方使用它。您知道,图像加载速度较慢,可能会重新检查滚动值,导致页面有时可能在访问时已滚动。 – 2013-05-13 02:13:26
是的,谢谢你!我已经将jQuery包装到'DOM ready'中,但这个'sticky()'函数真的很整洁! – 2013-05-13 02:21:53