所以我在这里尝试做的是在导航栏中使用bootstrap 4.1s scrollspy函数。我设法让它工作。不过我还想为它添加平滑滚动。在搜索整个互联网后,我仍然没有设法解决它。
这是我正在使用的原始代码(与bootstrap相同)。
<nav id="navbar-example2" class="navbar navbar-light bg-light">
<a class="navbar-brand" href="#">Navbar</a>
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link" href="#fat">@fat</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#mdo">@mdo</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="#one">one</a>
<a class="dropdown-item" href="#two">two</a>
<div role="separator" class="dropdown-divider"></div>
<a class="dropdown-item" href="#three">three</a>
</div>
</li>
</ul>
</nav>
<div data-spy="scroll" data-target="#navbar-example2" data-offset="0">
<h4 id="fat">@fat</h4>
<p>...</p>
<h4 id="mdo">@mdo</h4>
<p>...</p>
<h4 id="one">one</h4>
<p>...</p>
<h4 id="two">two</h4>
<p>...</p>
<h4 id="three">three</h4>
<p>...</p>
</div>
这就是我试图添加以实现平滑滚动的内容。
<script>
$(document).ready(function() {
$(".nav-item").click(function() {
var t = $(this).attr("href");
$('.active').removeClass('active');
$("html, body").animate({
scrollTop: $(t).offset().top - 50
}, {
duration: 1e3,
});
$('body').scrollspy({ target: '#navbar-example2',offset: $(t).offset().top });
$(this).parent().addClass('active');
return false;
});
});
//navbar
var distance = $('#site-header').offset().top,
$window = $(window);
$window.scroll(function() {
if ( $window.scrollTop() >= distance ) {
$('#site-header').addClass('fixed-nav')
}
if ( $window.scrollTop() <= distance ) {
$('#site-header').removeClass('fixed-nav')
}
});
$('body').scrollspy({ target: '#navbar-example2',offset: 0 });
</script>
截至目前,我感到困惑,我不明白我做错了什么。因为我无法使它发挥作用。我也试过添加不同的css:s但我无法使其工作。任何帮助都会得到满足。
答案 0 :(得分:0)
将点击处理程序的jQuery选择器更改为...
$(".nav-link,.dropdown-item").click(function() {
...
});
https://www.codeply.com/go/y0LweX2FBY
nav-link
选择器的问题在于它没有href,因此点击处理程序没有做任何事情。此外,您可能需要导航栏fixed-top
,以便在导航到某个部分时不会滚动。