我已经创建并确切地提到我的问题,在这里进行测试:
http://jsfiddle.net/aVBUy/7/
问题是,当我点击navbar项目时,我有一个脚本滚动到元素id。当页面处于正确的位置时,我使用scrollspy来突出显示导航元素。但是,scrollspy只有在浏览器/设备的顶部才能更改活动状态。因为我的导航栏是固定的,我需要一个偏移应用于scrollspy以偏移51px(导航栏高度)。
我已经尝试了一切,我无法让它工作。请检查我的小提琴,看看是否可以找到我错了的地方,会帮助我这么多。
这是我最小的代码…
HTML
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar-inner"> <div class="container"> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="brand" href="#"><img src="img/logo.gif" alt="" /></a> <div class="nav-collapse collapse"> <ul class="nav"> <li><a href="#welcome" data-scroll="#welcome">Welcome</a></li> <li><a href="#about" data-scroll="#about">About</a></li> <li><a href="#route" data-scroll="#route">The Route</a></li> <li><a href="#bike" data-scroll="#bike">The Bike</a></li> </ul> </div> </div> </div> </div> <div class="container"> <div id="welcome" class="row-fluid"> <div class="span12"> <h3>Welcome</h3> ... </div> </div> <hr /> <div id="about" class="row-fluid"> <div class="span12"> <h3>About the ride</h3> ... </div> </div> <hr /> <div id="route" class="row-fluid"> <div class="span12"> <h3>The Route</h3> ... </div> </div> <hr /> <div id="bike" class="row-fluid"> <div class="span12"> <h3>The Bike</h3> ... </div> </div> <hr> <footer> <p class="muted"><small>© 2013 All rights reserved.</small></p> </footer> </div>
CSS
body { padding: 51px 0 0; } /* Override Bootstrap Responsive CSS fixed navbar */ @media (max-width: 979px) { .navbar-fixed-top,.navbar-fixed-bottom { position: fixed; margin-left: 0px; margin-right: 0px; } } body > .container { padding: 0 15px; }
脚本
var offsetHeight = 51; $('.nav-collapse').scrollspy({ offset: offsetHeight }); $('.navbar li a').click(function (event) { var scrollPos = $('body > .container').find($(this).attr('href')).offset().top - offsetHeight; $('body,html').animate({ scrollTop: scrollPos },500,function () { $(".btn-navbar").click(); }); return false; });
小提琴
解决方法
您需要将偏移量应用于身体。
$('body').scrollspy({ offset: offsetHeight });
此外,您将需要从下面的行中的offsetHeight中减去至少一个,否则在向上滚动时将不起作用。
var scrollPos = $('body > .container').find($(this).attr('href')).offset().top - (offsetHeight - 1);