Jos*_*shc 15 jquery jsfiddle twitter-bootstrap scrollspy
我已经创建了我的问题,并在这里进行测试:http://jsfiddle.net/aVBUy/7/
问题是,当我点击导航栏项目时,我有一个滚动到元素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>
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
脚本
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;
});
Run Code Online (Sandbox Code Playgroud)
小提琴
Sch*_*lzy 22
您需要将偏移应用于正文.
$('body').scrollspy({
offset: offsetHeight
});
Run Code Online (Sandbox Code Playgroud)
此外,您需要从下面一行中的offsetHeight中减去至少一个,否则在向上滚动时它将不起作用.
var scrollPos = $('body > .container').find($(this).attr('href')).offset().top - (offsetHeight - 1);
Run Code Online (Sandbox Code Playgroud)
你也可以通过声明data-offset="51"
除了javascript(通过数据属性)实现这一点data-target
.
资料来源:https://getbootstrap.com/docs/3.3/javascript/#scrollspy-usage
归档时间: |
|
查看次数: |
46612 次 |
最近记录: |