Bootstrap4。平滑滚动可在.nav-link上进行,但不能在其他锚点上进行

Fru*_*els 6 jquery twitter-bootstrap

我正在使用Bootstrap 4,并且正在使用以下jQuery,以允许从.nav-links平滑滚动到部分ID(在同一页面中):

$('.nav-link').click(function() {
    var sectionTo = $(this).attr('href');
    $('html, body').animate({
      scrollTop: $(sectionTo).offset().top
    }, 1500);
});
Run Code Online (Sandbox Code Playgroud)

这对于.nav-link项目非常有用,但是如果我尝试添加其他类,则代码对它们无效。例如,我添加.navbar-brand和.new-button:

$('.nav-link, .navbar-brand, .new-button').click(function() {
    var sectionTo = $(this).attr('href');
    $('html, body').animate({
      scrollTop: $(sectionTo).offset().top
    }, 1500);
});
Run Code Online (Sandbox Code Playgroud)

任何帮助,不胜感激。

Jan*_*nek 19

在 css 中设置滚动行为,它会产生效果。

html {
  scroll-behavior: smooth;
}
Run Code Online (Sandbox Code Playgroud)

这是示例的链接:https : //jsfiddle.net/mzjan/set7aLnp/

  • 请注意,截至 2021 年 8 月,浏览器支持率仅为 77% https://caniuse.com/css-scroll-behavior (2认同)

Roh*_*rma 10

它在bootstrap 4上可以正常工作,并且此代码也可以正常工作,这在您其他代码中可能有问题。

$('.test, .nav-link, .navbar-brand, .new-button').click(function() {
    var sectionTo = $(this).attr('href');
    $('html, body').animate({
      scrollTop: $(sectionTo).offset().top
    }, 1500);
});
Run Code Online (Sandbox Code Playgroud)
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>

<a href="#one" class="test">test class</a><br>
<a href="#two" class="navbar-brand">navbar-brand class</a>

<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

<div id="one">test class</div>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

<div id="two">navbar-brand class</div>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
Run Code Online (Sandbox Code Playgroud)