【问题标题】:Show Navbar only when scrolling to top on mobile (Bootstrap 4)仅在移动设备上滚动到顶部时显示导航栏(Bootstrap 4)
【发布时间】:2018-06-17 12:02:58
【问题描述】:

我只想在用户滚动到页面顶部时才在移动设备上显示导航栏。

目前每次用户向下或向上滚动时它都会卡在顶部。 我正在使用这里的代码:https://stackoverflow.com/a/42250478/1788961 示例如下:https://www.codeply.com/go/H7ZKuxKTKm

我的 JS 代码:

new IntersectionObserver(function(e,o){
        if (e[0].intersectionRatio > 0){
            document.documentElement.removeAttribute('class');
        } else {
            document.documentElement.setAttribute('class','stuck');
        };
    }).observe(document.querySelector('.trigger'));

编辑:澄清我想要什么:

我不希望移动设备上的导航栏变得粘滞。它应该与网站的其余部分一起滚动。但是,如果我在页面底部并且滚动到顶部,导航栏应该出现在顶部并且只要我滚动到顶部就会一直停留在那里。

【问题讨论】:

  • 那么你的问题是什么??
  • 只有在移动设备上滚动到顶部时,我才知道如何添加卡住的类

标签: javascript html css bootstrap-4 sticky


【解决方案1】:

您将使用 CSS 媒体查询仅在移动设备上应用 position:sticky(即;

.sticky-top {
    position: static;
}

@media (max-width:768px) {
    .sticky-top {
        transition: all 0.25s ease-in;
        position: sticky;
    }

    .stuck .sticky-top {
        background-color: #222 !important;
        padding-top: 3px !important;
        padding-bottom: 3px !important;
    }
}

https://www.codeply.com/go/1b80jD3Tpg

如果您想要相反的效果(移动设备上的非粘性导航栏),只需将媒体查询反转为 min-width 而不是 max-width...

@media (min-width:768px) {
    .sticky-top {
        transition: all 0.25s ease-in;
        position: sticky;
    }

    .stuck .sticky-top {
        background-color: #222 !important;
        padding-top: 3px !important;
        padding-bottom: 3px !important;
    }
}

https://www.codeply.com/go/4RtpB24k23

【讨论】:

  • 是的,但是如果我滚动到顶部,导航栏不会显示
  • 不明白你的意思。什么时候不显示在顶部?
  • 我只想在滚动到顶部时才在移动设备上显示导航栏。
  • 这就是它正在做的事情。我认为你需要澄清这个问题。您是否不想在非移动设备上显示导航栏?预期的行为不明确。
  • 我不希望移动设备上的导航栏变得粘滞。它应该与网站的其余部分一起滚动。但是,如果我在页面底部并且滚动到顶部,导航栏应该出现在顶部并且只要我滚动到顶部就会一直停留在那里。
【解决方案2】:

即使用户滚动,“sticky-top”类也会使导航栏粘在页面顶部。取下它可以解决您的问题。

此处示例:https://www.codeply.com/go/wWKGkjYdGy

【讨论】:

  • 但我不想关闭它,我需要它只有在滚动到顶部时才会出现
  • 我不明白。当您滚动到顶部时,导航栏可见。您的意思是如果用户位于底部并开始向上滚动,您希望它可见吗?
  • 这个 jsfiddle 做了一些非常相似的事情 jsfiddle.net/mariusc23/s6mLJ/31
  • 那个 jsfiddle 有帮助吗?
猜你喜欢
  • 2017-09-21
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
相关资源
最近更新 更多