代码之家  ›  专栏  ›  技术社区  ›  RA19

仅当滚动到第一节标记时,CSS导航背景颜色才会更改

  •  0
  • RA19  · 技术社区  · 6 年前

    使用引导框架,我试图将导航条的背景色从透明改为白色。当我使用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)时更改背景颜色,而不想在导航栏收缩时更改背景颜色。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Neil VanLandingham    6 年前

    如果使用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
  •  0
  •   RA19    6 年前
    $(document).ready(function () {
        $(window).on("scroll", function () {
            if ($(window).scrollTop() >= 800) {
                $(".navbar").addClass("navbar-shrink ");
            } else {
                $(".navbar").removeClass("navbar-shrink ");
            }
        });
    });