twitter Bootstrap Scrollspy突出显示最终元素

dea*_*ifi 8 javascript twitter-bootstrap

我正在构建一个单页网站,顶部栏导航链接到页面上的不同部分.我已经使用链接起来Scrollspy作为 <body data-spy="scroll" data-offset="50" id="home">.这很好用.每个部分都在导航中突出显示.

问题出在最后一节.因为它是一个短节并且没有填满整个页面,id="contact"所以永远不会到达,因此导航元素不会突出显示.

我注意到,当你到达最后一个元素时,在bootstrap示例页面上它会在id到达之前突出显示- 但它id就像所有其他部分一样位于该部分的顶部.

我已经查看了自定义application.js文件,但没有看到任何与scrollspy行为有关的内容.

任何人都可以对此有所了解吗?

Joh*_*ive 11

对于某些人来说,这个问题可能是由于怪癖/ DOCTYPE问题造成的.如果您的滚动区域位于正文上,则scrollspy将计算窗口对象的视口高度.如果您使用的是jQuery 1.8.2并且没有正确的DOCTYPE设置,则视口高度的scrollspy计算将返回总高度,从而导致始终选择最后一个项目.

如果您在http://twitter.github.com/bootstrap/javascript.html上切换回jQuery 1.7.2,那么它将再次运行,或者您可以设置正确的DOCTYPE.

以下是关于"notabug"问题的更多信息:http://bugs.jquery.com/ticket/12426


小智 8

我自己只是在寻找答案.当涉及到最后一项时,引导程序演示页面确实做了与我的页面不同的事情.我也浏览了application.js,但没有看到任何东西.最后我决定比较他们的scrollspy.js和我的版本.他们使用v2.0.4而我有v2.0.2.我用新版本替换了我的版本,它刚刚开始按预期工作.

然后我参考了bootstrap changelog,发现v2.0.3于2012年4月24日发布.列出的其中一个更改是"如果你到达文档或元素的底部,总是在scrollspy中选择最后一项".

所以我猜他们在我下载bootstrap之后就在内部安静地修复了它.您可能已经想到了这一点,但希望它能帮助其他人寻找相同的答案.


And*_*ich 5

只需将您的data-offset属性增加到更大的值,例如500,如下所示:

<body data-spy="scroll" data-offset="500" id="home">
Run Code Online (Sandbox Code Playgroud)

bootstrap 演示工作正常,因为它还偏移了子导航的高度,以及50px数据属性上给出的偏移量。