【问题标题】:How do I make the Second Navbar Menu Sticky Work Correctly?如何使第二个导航栏菜单粘性正确工作?
【发布时间】:2020-02-17 00:01:36
【问题描述】:

您好,对于我的网站,我希望第二个白色菜单栏移动到顶部中间并在我开始向下滚动时保持在顶部。我遵循了有关如何执行此操作的教程,但由于某种原因,它移动到了最左边并且没有一直扩展。 (出于测试目的,将导航栏变为红色。)

我对 javascript 很陌生,所以请放轻松。 :)

这是我正在开发的网站。 http://lonestarwebandgraphics.com/

    const nav = document.querySelector('.header-menu_wrap');
    const topOfNav = nav.offsetTop;
    
    function fixNav() {
    
        if (window.scrollY >= topOfNav) {
            document.body.style.paddingTop = nav.offsetHeight + 'px';
            document.body.classList.add('fixed-nav');
        } else {
    
            document.body.style.paddingTop = 0;
            document.body.classList.remove('fixed-nav');
    
        }
    }
    
    window.addEventListener('scroll', fixNav);
    
    // 135 140
    .fixed-nav .header-menu_wrap .header-container_wrap  {
        position: fixed;
        box-shadow: 0 5px rgba(0, 0, 0, 0.1);
        background: red;
    }
     <!-- Bottom White header START-->
            <nav class="header-menu_wrap">
                <div class="header-container_wrap container">
                    <div class="header-container__flex">
                        <div class="header_caption">
                            <!-- MENU -->
                            <nav id="site-navigation" class="main-navigation stuckMenu" role="navigation">
                                <!-- HAMBURGER BARS -->
                                <!-- <button class="menu-toggle" aria-controls="main-menu" aria-expanded="false">
                                    <i class="menu-toggle" aria-controls="main-menu8" aria-expanded="false">
                                        <i class="fas fa-bars"></i>
                                    </i>
                                </button> -->
                                <!-- HAMBURGER BARS END -->
                                <!-- MENU START -->
                                <ul class="menu" id="main-menu">
                                    <li><a href="#about">ABOUT</a></li>
                                    <li><a href="#services">SERVICES</a></li>
                                    <li><a href="#photo-gallery">PHOTO GALLERY</a></li>
                                    <li><a href="#video-example">VIDEO EXAMPLE</a></li>
                                    <li><a href="#contacts">CONTACTS</a></li>

                                </ul>
                                <!-- MENU START END -->
                                <!-- SEARCH ICON -->
                                <div class="header__search">
                                    <i class="fas fa-search"></i>
                                </div>
                            </nav>
                        </div>
                    </div>
                </div>
            </nav>
            
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>

【问题讨论】:

  • 我编辑了您的原始帖子,将代码作为片段包含在内,并在末尾添加了返回行(目前尚不可见)。但我总结了结果:它有效 XD。

标签: javascript navbar sticky


【解决方案1】:

在您提供的页面中存在几个问题:首先,如果您将页面的一部分解耦,通常最好留下一些东西来保持高度。其次,z-index 存在问题。最后,最好在收到 onready/onload 事件时读取元素的坐标,而不是之前,因为页面布局可以更改或无法访问,我说:

const nav = document.querySelector('.header-menu_wrap');
const topOfNav = nav.offsetTop;

正如我在主帖中评论的那样,如果我将您提供的代码添加到一个片段中,它对我有用:

    const nav = document.querySelector('.header-menu_wrap');
    const topOfNav = nav.offsetTop;
    
    function fixNav() {
    
        if (window.scrollY >= topOfNav) {
            document.body.style.paddingTop = nav.offsetHeight + 'px';
            document.body.classList.add('fixed-nav');
        } else {
    
            document.body.style.paddingTop = 0;
            document.body.classList.remove('fixed-nav');
    
        }
    }
    
    window.addEventListener('scroll', fixNav);
    
    // 135 140
    .fixed-nav .header-menu_wrap .header-container_wrap  {
        position: fixed;
        box-shadow: 0 5px rgba(0, 0, 0, 0.1);
        background: red;
    }
     <!-- Bottom White header START-->
            <nav class="header-menu_wrap">
                <div class="header-container_wrap container">
                    <div class="header-container__flex">
                        <div class="header_caption">
                            <!-- MENU -->
                            <nav id="site-navigation" class="main-navigation stuckMenu" role="navigation">
                                <!-- HAMBURGER BARS -->
                                <!-- <button class="menu-toggle" aria-controls="main-menu" aria-expanded="false">
                                    <i class="menu-toggle" aria-controls="main-menu8" aria-expanded="false">
                                        <i class="fas fa-bars"></i>
                                    </i>
                                </button> -->
                                <!-- HAMBURGER BARS END -->
                                <!-- MENU START -->
                                <ul class="menu" id="main-menu">
                                    <li><a href="#about">ABOUT</a></li>
                                    <li><a href="#services">SERVICES</a></li>
                                    <li><a href="#photo-gallery">PHOTO GALLERY</a></li>
                                    <li><a href="#video-example">VIDEO EXAMPLE</a></li>
                                    <li><a href="#contacts">CONTACTS</a></li>

                                </ul>
                                <!-- MENU START END -->
                                <!-- SEARCH ICON -->
                                <div class="header__search">
                                    <i class="fas fa-search"></i>
                                </div>
                            </nav>
                        </div>
                    </div>
                </div>
            </nav>
            
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>

【讨论】:

    猜你喜欢
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    相关资源
    最近更新 更多