【问题标题】:Bootstrap 5 > change styling of the navbar when expanded on smaller devicesBootstrap 5 > 在较小的设备上扩展时更改导航栏的样式
【发布时间】:2021-11-12 16:49:56
【问题描述】:

第一次在这里发问题,请善待:)

我添加了以下脚本以在滚动时更改导航栏的 css。

window.addEventListener("scroll", function () {
let header = document.querySelector(".navbar");
let windowPosition = window.scrollY > 0;
header.classList.toggle("change-bg-nav", windowPosition);});

这是类的 CSS

.change-bg-nav {
box-shadow: var(--box-shadow);
background-color: rgb(255, 255, 255, 0.9) !important;
backdrop-filter: blur(5.5px);}

效果很好,当我在任何设备尺寸上滚动时,导航栏的 css 会按预期变化。现在,当我在较小的设备上并单击汉堡包图标以展开菜单**但没有滚动**时,我希望达到相同的效果。我已经尝试过媒体查询,但这并没有给我想要的结果。关于如何解决这个问题的任何建议?

我的导航代码

<nav class="navbar navbar-expand-lg navbar-light bg-light px-3 mb-5">
    <div class="container-fluid">
    <a class="navbar-brand" href="/">Brand name</a>
                <button
                    class="navbar-toggler"
                    type="button"
                    data-bs-toggle="collapse"
                    data-bs-target="#navbarNavAltMarkup"
                    aria-controls="navbarNavAltMarkup"
                    aria-expanded="false"
                    aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
                    <div class="navbar-nav ms-auto">
                        <a class="nav-link active" aria-current="page" href="/">Home</a>
                        <a class="nav-link" href="/about.html">About</a>
                        <a class="nav-link" href="/about.html#contact-me">Contact</a>
                    </div>
                    <div class="navbar-nav social-media">
                        <a href="#" target="_blank" class="nav-link social"><i class="fab fa-twitter px-1"></i></a>
                        <a href="#" target="_blank" class="nav-link social"><i class="fab fa-linkedin-in px-1"></i
                        ></a>
                    </div>
                </div>
            </div>
        </nav>

【问题讨论】:

    标签: javascript html css navbar bootstrap-5


    【解决方案1】:

    挂钩到导航栏折叠事件以切换 change-bg-nav 类...

    let header = document.querySelector(".navbar");
    header.addEventListener('show.bs.collapse', function () {
         header.classList.toggle("change-bg-nav");
    })
    header.addEventListener('hide.bs.collapse', function () {
         header.classList.toggle("change-bg-nav");
    })
    

    https://codeply.com/p/7AXPT20HSL

    【讨论】:

    • 这确实有效,谢谢!当您在移动设备上结合滚动然后单击汉堡包图标,释放它并再次向上滚动时,交互有一些奇怪的地方。如果您在 show.bs 上使用“add”而不是“toggle”,然后在 hide.bs 上使用“remove”,发现它实际上表现得更直观。仍在试图弄清楚“添加”和“切换”之间的区别。
    【解决方案2】:

    对于移动设备,我认为您应该使用另一种策略。 即。

    if(hamburger.clicked) {
    // add bg navber color.
    }
    

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    • 我考虑过这一点,但结合滚动并根据操作的顺序,它的行为仍然不像我想要的那样,所以决定放弃将导航固定在顶部的想法只需操纵汉堡包中的css是否可见。当我找到更好的解决方案时会回到这个问题。
    猜你喜欢
    • 1970-01-01
    • 2016-05-13
    • 2017-11-16
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 2022-01-21
    相关资源
    最近更新 更多