【发布时间】:2019-03-27 14:41:59
【问题描述】:
我正在尝试平滑滚动
但滚动条无法按预期工作,看起来平滑滚动,默认跳转到 # 同时工作
这是我的 HTML(引导带导航)
<nav class="navbar fixed-top navbar-expand-sm navbar-light bg-light mb-3" id="main-nav">
<div class="container">
<a class="navbar-brand" href="#">Navbar</a>
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="#welcome">Welcome</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#about">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#services">Services</a>
</li>
</ul>
</div>
</nav>
这里是我的 js
<script>
$('body').scrollspy({
target: '#main-nav',
offset: $('#main-nav').outerHeight()
});
// add smooth scrolling
$('#main-nav a').on('click',(event) => {
const sender = event.target; // sender
// check for a hash value
if (sender.hash)
{
// prevent default behaviour
event.preventDefault();
// get sendar hash
const hash = sender.hash;
const navHeight = $('#main-nav').outerHeight();
// animate smooth scroll
$('html').animate({
scrollTop: $(hash).offset().top - (navHeight + 1),
},1500,() => {
// add hash to URL after scroll
this.location.hash = hash;
});
}
});
</script>
页面内容
<section id="welcome">
<h3>Welcome</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Dicta eaque similique cupiditate! Pariatur, aliquid quae recusandae quidem atque cumque perspiciatis possimus quod repudiandae, labore nobis eius voluptatum! Impedit, sint in.
</p>
</section>
<section id="about">
<h3>About</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Dicta eaque similique cupiditate! Pariatur, aliquid quae recusandae quidem atque cumque perspiciatis possimus quod repudiandae, labore nobis eius voluptatum! Impedit, sint in.
</p>
</section>
<section id="services">
<h3>Services</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Dicta eaque similique cupiditate! Pariatur, aliquid quae recusandae quidem atque cumque perspiciatis possimus quod repudiandae, labore nobis eius voluptatum! Impedit, sint in.
</p>
</section>
当我第一次单击nav 上的链接时,它会滚动导航栏到内容标题上(使我的标题消失)
但是当我再次点击相同的链接时,它会向上滚动一点并显示为我的预期结果
所以。任何人都知道如何解决此问题以使滚动在第一次点击时正常工作
谢谢。
【问题讨论】:
标签: javascript jquery html css bootstrap-4