【问题标题】:CSS nav background colour change only when scrolled to first section tagCSS 导航背景颜色仅在滚动到第一部分标签时更改
【发布时间】:2018-12-12 08:05:14
【问题描述】:

使用引导框架,我正在尝试将导航栏背景颜色从透明更改为白色。当我使用 navbar-shrink 类稍微滚动时,它目前正在工作。但是,当导航栏缩小时,我只想将导航栏颜色从透明更改为白色,而不是立即到达第一部分标签...

#mainNav.navbar-shrink {
    border-bottom: 1px solid rgba(33,37,41,.1);
    background-color: #fff;
}

.container {
    background-color: grey;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>

<nav class="navbar navbar-expand-lg navbar-light fixed-top" id="mainNav">
    <div class="container">
        <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarResponsive">
            <ul class="navbar-nav ml-auto">
                <li class="nav-item">
                    <a class="nav-link js-scroll-trigger selected" href="#about">About</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link js-scroll-trigger" href="#services">Services</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link js-scroll-trigger" href="#portfolio">Projects</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link js-scroll-trigger" href="#contact">Contact</a>
                </li>
            </ul>
        </div>
    </div>
</nav>
<section class="bg-primary first" id="about">
    <div class="container">
        <div class="row">
</section>

我希望只有当我滚动到部分标签(id = about)而不是导航栏缩小时才会改变背景颜色

【问题讨论】:

  • 你在使用 scrollspy 吗?
  • 问题有点混乱。您真的是指“滚动”到第一个菜单项吗?在 sn-p 中没有那么多菜单项,所以那里没有发生滚动。
  • 你在使用 bootstrap 自带的 scrollspy js 插件吗?

标签: css bootstrap-4


【解决方案1】:

如果您使用 ScrollSpy 插件来处理更新活动导航链接,您可以使用以下解决方案。当滚动到#about 部分时,这只会将导航栏变为白色。

$('[data-spy="scroll"]').on('activate.bs.scrollspy', function (e) {
  var tabId = $(e.target).find('a').attr("href");
  if(tabId == "#about"){
    $("#mainNav").css("background-color","#fff")
  }
})

【讨论】:

    【解决方案2】:
    $(document).ready(function () {
        $(window).on("scroll", function () {
            if ($(window).scrollTop() >= 800) {
                $(".navbar").addClass("navbar-shrink ");
            } else {
                $(".navbar").removeClass("navbar-shrink ");
            }
        });
    });
    

    【讨论】:

    • 也能做到这一点
    猜你喜欢
    • 2017-12-27
    • 2017-04-30
    • 2020-04-18
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多