平滑滚动锚链接没有发生 - 只是跳转到部分而不是滚动

  • 本文关键字:滚动 链接 平滑 html jquery
  • 更新时间 :
  • 英文 :


我想对我的锚链接使用平滑滚动,就像这里显示的那样:https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_smooth_scroll_jquery

所以我用 gollowing html 这样设置了我的 jquery 代码,但滚动似乎没有影响(chrome(。不确定我做错了什么:

$(document).ready(function(){
// Add smooth scrolling to all links
$("a[href^="#"]").on('click', function(event) {
// Make sure this.hash has a value before overriding default behavior
if (this.hash !== "") {
// Prevent default anchor click behavior
event.preventDefault();
// Store hash
var hash = this.hash;
// Using jQuery's animate() method to add smooth page scroll
// The optional number (800) specifies the number of milliseconds it takes to scroll to the specified area
$('html, body').animate({
scrollTop: $(hash).offset().top
}, 800, function(){
// Add hash (#) to URL when done scrolling (default click behavior)
window.location.hash = hash;
});
} // End if
});
});

.HTML:

<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="/../#top">HOME</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/../#about">ABOUT</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/../#courses">COURSES</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/../#services">SERVICES</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/../#testimonials">TESTIMONIALS</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/../#contact">CONTACT</a>
</li>
</ul>

1.您的代码中有错误 - 如果您检查了,控制台中就会出现错误。您已在以下行中嵌套"

$("a[href^="#"]").on('click', function(event) {

您可以执行$('a[href^="#"]')$("a[href^="#"]")

2.还要确保在要链接到的页面上有此代码!我看到您的URL是相对的,因此我认为链接将转到其他页面。

这是您在工作片段中的代码(我将链接更改为在同一页面上,以便您可以看到它们的实际效果(。

$(document).ready(function() {
// Add smooth scrolling to all links
// CHANGE THIS LINE - you can't nest double quotes 
$("a[href^="#"]").on('click', function(event) {
// Make sure this.hash has a value before overriding default behavior
if (this.hash !== "") {
// Prevent default anchor click behavior
event.preventDefault();
// Store hash
var hash = this.hash;
// Using jQuery's animate() method to add smooth page scroll
// The optional number (800) specifies the number of milliseconds it takes to scroll to the specified area
$('html, body').animate({
scrollTop: $(hash).offset().top
}, 800, function() {
// Add hash (#) to URL when done scrolling (default click behavior)
window.location.hash = hash;
});
} // End if
});
});
p{ margin-bottom:3em;}
<a id="top" name="top"><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="#top">HOME</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#about">ABOUT</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#courses">COURSES</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#services">SERVICES</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#testimonials">TESTIMONIALS</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#contact">CONTACT</a>
</li>
</ul>
<p>...</p>
<p>...</p>
<p>...</p>
<p>...</p>
<a id="about" name="about">
<h2>About</h2>
<p><a href="#top">Go to top...</a></p>
<p>...</p>
<p>...</p>
<p>...</p>
<a id="courses" name="courses">
<h2>Courses</h2>
<p><a href="#top">Go to top...</a></p>
<p>...</p>
<p>...</p>
<p>...</p>
<a id="services" name="services">
<h2>Services</h2>
<p><a href="#top">Go to top...</a></p>
<p>...</p>
<p>...</p>
<p>...</p>
<a id="testimonials" name="testimonials">
<h2>Testimonials</h2>
<p><a href="#top">Go to top...</a></p>
<p>...</p>
<p>...</p>
<p>...</p>
<a id="contact" name="contact">
<h2>Contact</h2>

最新更新