javascript - 试图让我的导航栏停留在页面顶部并随其滚动

标签 javascript html css

我知道如何使用 position: fixed; 让它随着页面滚动,但我的导航栏不在页面顶部,它在我的标题下面。我希望导航栏直接保留在标题下方,直到页面顶部点击它,然后我希望它随页面向下滚动。我已经尝试使用 JS 来执行此操作并使用 JSfiddle 我能够让它工作 http://jsfiddle.net/uaqh018d/78/

但是,当我将它应用到我的网站时它不起作用,我也不知道为什么。

要遵循的站点代码:

HTML

<html>
<head>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>

<!--begin header & navbar-->

<div class="header">

        <div class="container">

            <div class="banner">
                <h1><img src="media/CSG%20header%20final.svg" width="961" height="250" alt="crit strike gaming header"></h1>                    
            </div>

            <div class="nav">
                <ul>
                    <li><a href="#">Home</a></li>
                    <li><a href="#">Reviews</a></li>    
                    <li><a href="#">Previews</a></li>
                    <li><a href="#">Lets Plays</a></li>
                    <li><a href="#">Forums</a></li>                         
                </ul>
            </div>  
        </div>      
   </div>

   <!--end header & navbar-->       

   <!-- begin content-->    

   <div class="container">  

    <div class="content">


    </div>

   </div>

   <!--end content-->

   <script type="text/javascript" src="navfunction.js"></script>

</body>
</html>

CSS

body{
    background: #ffda0a;
    width: 100%;
    margin: auto;
}

.container{
    width: 960px;
    margin: 0 auto;
}

.header{
    width: 100%;
    height: 250px;
    margin: 0 auto;
    top: 0;
}

.content{
    background-color: rgba(255,255,255,.5);
    width: 100%;
    margin: 0 auto;
    margin-left: 1px;
    clear: both;
}

a{
    text-decoration: none;
    color: #ffda0a;
}

li{
    list-style: none;
    margin-left: 75px;
    float: left;
    font-size: 25px;
}

.nav{
    background: #a71e1f;
    width: 960px;
    height: 30px;
    margin-left: 1px;   
}

.nav.fixed {
    display: block;
    position: fixed;
    top: 0;
    width: 100%;
}

.banner{
    height: 230px;
}

JS

$(document).ready(function() {
$(window).scroll(function() {
    var distanceFromTop = $(document).scrollTop();
    if (distanceFromTop >= $('#header').height())
    {
        $('#nav').addClass('fixed');
    }
    else
    {
        $('#nav').removeClass('fixed');
    }
    });
    });

如果有人能解决这个问题,我将不胜感激。

最佳答案

请参阅更正后的 fiddle - http://jsfiddle.net/drecodeam/8Lubmkvw/

您在 HTML 中使用类,但在 jQuery 中将它们作为 ID 访问。

正确的JS应该是

$(document).ready(function () {
    $(window).scroll(function () {
        var distanceFromTop = $(document).scrollTop();
        if (distanceFromTop >= $('.header').height()) {
            $('.nav').addClass('fixed');
        } else {
            $('.nav').removeClass('fixed');
        }
    });
});

关于javascript - 试图让我的导航栏停留在页面顶部并随其滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31444638/

相关文章:

CSS3 box-sizing 50% 宽度

javascript - 在javascript中为一组嵌套的div中的元素子集设置动画收缩和扩展过渡

javascript - 使用 Google Apps 脚本从母版幻灯片台复制多张幻灯片

javascript - 悬停时带有边框底部的纯 CSS 等高列?

javascript - 仅在打开的对话框中触摸滚动。不要移动整个 body

javascript - 循环仅在添加 span 标记时显示数组中的最后一个字符串

javascript - 用 X 替换 html 复选框

javascript - 带有标签(数据名称)和百分比年龄的半圆形 donut 饼图......以及鼠标悬停时的数据编号

javascript - React 应用程序在 15.6.2 上运行良好,在 16.0.0 上中断

javascript - Angular .js : Repeating HTML data list