【发布时间】:2018-09-22 17:47:05
【问题描述】:
我已经为我正在处理的这个自我项目创建了一个实用程序和主导航栏,我希望主导航在我滚动 42 像素时变得粘滞。
但是,当我滚动导航栏时,它不会停留在窗口顶部。我使用实用程序导航对其进行了测试,并且效果很好。这是我对主导航栏的编码...
$(window).on("scroll", function () {
var distanceScrolled = $(window).scrollTop();
console.log("The distance scrolled is: " + distanceScrolled);
if(distanceScrolled>42){
$("#main-nav").addClass("scrolled");
}
else{
$("#main-nav").removeClass("scrolled");
}
});
#main-nav {
position: relative;
width: 100%;
height: 100px;
background-color: #000000;
}
.main-nav-left {
list-style: none;
float: left;
padding-left: 28px;
height: 100px;
}
.main-nav-items {
position: absolute;
top: 40%;
left: 290px;
list-style: none;
text-decoration: none;
}
.main-nav-items li {
display: inline-block;
padding-right: 12px;
margin-right: 13px;
}
.main-nav-right li {
float: right;
padding-right: 12px;
margin-right: 26px;
margin-top: 40px;
list-style: none;
}
#main-nav a {
text-decoration: none;
color: #ffffff;
}
.scrolled {
position: fixed;
top: 0;
z-index: 1000;
}
<nav id="main-nav">
<ul class="main-nav-left">
<li><a href="#"><img src="images/thule_logo.png" height="100" width="auto"></a></li>
</ul>
<ul class="main-nav-items">
<li><a href="#">CARRIERS & RACKS</a></li>
<li><a href="#">ACTIVE WITH KIDS</a></li>
<li><a href="#">LUGGAGE & BAGS</a></li>
<li><a href="#">SLEEVES & CASES</a></li>
<li><a href="#">EXPLORE THULE</a></li>
</ul>
<ul class="main-nav-right">
<li><a href="#"><i class="fas fa-search fa-lg"></i></a></li>
</ul>
</nav>
<script src="js/jquery-v3.3.1.js"></script>
<script src="js/main.js"></script>
【问题讨论】:
-
您还没有将 jQuery 添加到您的 sn-p 中,从语法来看 - 以及控制台中的错误:
Uncaught ReferenceError: $ is not defined- 似乎是一个要求。 -
要将 jQuery 添加到您的 HTML 文件中,请在 head 部分中添加:
<head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> </head> -
您是否考虑过只使用
position: sticky(文档:W3C、MDN)? -
我忘记将脚本标签添加到 sn-p。我的 HTML 中有两个脚本标签:
-
我在“main-nav”标签周围添加了一个div,并在JS中调用它。它可以工作,但导航栏会发生变化。
标签: javascript html css navbar