【问题标题】:Bootstrap 4 - How to make fixed-top navbar disappear on scrollBootstrap 4 - 如何使固定顶部导航栏在滚动时消失
【发布时间】:2019-01-12 22:20:25
【问题描述】:

使用 Bootstrap 4,如何使固定顶部导航栏在滚动时消失?我在下面附上了默认 Bootstrap 4 导航栏的 html 代码。

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">

<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
  <a class="navbar-brand" href="#">Test</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>

  <div class="collapse navbar-collapse" id="navbarsExampleDefault">
    <ul class="navbar-nav ml-auto py-md-2">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">About</a>
      </li>
    </ul>
  </div>
</nav>

<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.14.3/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>

【问题讨论】:

  • “固定”的目的是在滚动时保持原位。那么为什么不删除fixed-top呢?
  • 我想保持它固定,但希望它在滚动过程中在滚动一定量后消失。例如,在页面向下 700 像素后,我希望导航栏消失。

标签: jquery twitter-bootstrap bootstrap-4


【解决方案1】:

Cue 也打败了我吧。与他的回答类似,但不使用短代码。

jQuery

// scroll functions
$(window).scroll(function(e) {

    // add/remove class to navbar when scrolling to hide/show
    var scroll = $(window).scrollTop();
    if (scroll >= 150) {
        $('.navbar').addClass("navbar-hide");
    } else {
        $('.navbar').removeClass("navbar-hide");
    }

});

CSS 导航栏淡出选项

Codeply 演示 https://www.codeply.com/go/rTR1dcn4n6

.navbar {
    opacity: 1;
    transition: opacity 0.5s ease;
}

.navbar-hide {
    pointer-events: none;
    opacity: 0;
}

CSS 导航栏上滑选项

Codeply 演示 https://www.codeply.com/go/7Fab8Thufl

.navbar {
    transition: top 0.5s ease;
}

.navbar-hide {
    top: -56px;
}

如果你喜欢更少的代码,Cue 的答案可能会更好,下面是他使用我的 hide 类的方法。

Cue 的 jQuery

// scroll functions
$(window).scroll(function(e) {

    // add/remove class to navbar when scrolling to hide/show
    $('.navbar')[$(window).scrollTop() >= 150 ? 'addClass' : 'removeClass']('navbar-hide');

});

CSS navbar 淡出选项(同上)

Codeply 演示 https://www.codeply.com/go/KPnx8ewEED

CSS 导航栏上滑选项(同上)

Codeply 演示 https://www.codeply.com/go/i82vYBGeu7

【讨论】:

  • 这就是当你尽可能多地详细说明时会发生的情况,但老实说,我更喜欢这个视觉上工作的版本。很好的例子。
  • @Cue 谢谢伙计,虽然我从你的代码中学到了很多东西。不知道你可以使用这样的jQuery函数,聪明!
  • 俗话说“每天都是上学日”
【解决方案2】:

要在达到某个偏移量时有条件地移除导航栏的固定位置(在本例中,我们将使用距视口顶部 150 像素),那么您可以这样做:

$(window).on('scroll', function (e) {
  $('.navbar')[$(window).scrollTop() >= 150 ? 'removeClass' : 'addClass']('fixed-top');
})

根据ajax333221的评论,toggleClass()也可以使用:

$(window).on('scroll', function (e) {
  $('.navbar').toggleClass('fixed-top', $(window).scrollTop() < 150);
})

【讨论】:

  • 谢谢,这行得通,但我怎样才能让它不那么不稳定,而更像是淡出呢?
  • 参见@joshmoto 示例here
  • 或许可以使用.toggleClass( className, state ) 代替:一个布尔值(不仅仅是真/假),用于确定是否应该添加或删除该类。
  • @ajax333221 已更新以反映您的建议。谢谢!
【解决方案3】:

Fixed-top 强制导航保持固定到视口的顶部。

"位置固定的元素;相对于 视口,这意味着它始终保持在同一个位置,即使 页面滚动。使用了 top、right、bottom 和 left 属性 定位元素。”

当您向下滚动时,Html 元素会自然移动。如果您希望导航随内容滚动,则需要删除此类。

【讨论】:

  • fixed-top 在滚动时将导航栏保持在浏览器的顶部。我想将它保持在顶部,但我希望它在向下滚动页面一定长度后使用 jquery 消失
猜你喜欢
  • 2019-06-05
  • 2017-07-14
  • 1970-01-01
  • 1970-01-01
  • 2018-09-13
  • 2018-12-12
  • 1970-01-01
  • 2017-01-18
  • 1970-01-01
相关资源
最近更新 更多