我正在尝试实现一个“粘性”导航菜单 - 当导航栏在滚动时到达屏幕顶部时切换到固定位置的菜单项。
这在 Firefox 和 Chrome 中是一种享受,但在 Internet Explorer 中(在 9 中测试),当滚动到达某个点并且位置切换到固定时,所有 child<li>
的消失(但<ul>
它们包含在其中的位置保持不变尺寸。
我正在尝试使用 jQuery 来做到这一点(这是我拥有的代码):
<script type="text/javascript">
$(function() {
// grab the initial top offset of the navigation
var sticky_navigation_offset_top = $('#navigation').offset().top;
// our function that decides weather the navigation bar should have "fixed" css position or not.
var sticky_navigation = function(){
var scroll_top = $(window).scrollTop(); // our current vertical position from the top
// if we've scrolled more than the navigation, change its position to fixed to stick to top, otherwise change it back to relative
if ((scroll_top + 40) > sticky_navigation_offset_top) {
$('#navigation').css({ 'position': 'fixed', 'top':40, 'left':0 });
} else {
$('#navigation').css({ 'position': 'static', 'margin-top': 0 });
}
};
// run our function on load
sticky_navigation();
// and run it again every time you scroll
$(window).scroll(function() {
sticky_navigation();
});
});
</script>
不幸的是,我无法证明这一点,因为它是在我们需要登录的安全网站上实现的。希望我说得有道理。如有必要,我可以提供屏幕截图。
编辑:我应该提一下,当位置是static
IE9 中正确显示的菜单项时。当我向下滑动菜单变为 时fixed
,菜单项消失了!
另一个编辑:我第一次使用 jsfiddle.net 所以希望它可以工作http://jsfiddle.net/ecm5L/