jquery - 粘性导航栏未正确定位
问题描述
您好,我刚刚在上方和标题上制作了一个导航栏,第一个解决方案是使用,.sticky-top
但是当我决定在导航栏被越过后让一些图标出现在导航栏上时,我遇到了一些小麻烦。
现在我的导航栏没有按原样返回(它粘在真正的顶部,在我的标题上方),我有一个垂直溢出,我被卡住了。
示例(红色容器经过 photoshop 处理,只是为了向您展示导航栏的位置)
你能帮我理解我做错了什么吗?谢谢你。
导航栏:
<nav id="navbar" class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#al-center-nav" aria-controls="al-center-nav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="#"><img src="imgs/logo.png" id="logo" height="40px" width="75px"></a>
<div class="collapse navbar-collapse center" id="al-center-nav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="#">Link 1</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link 2</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link 3</a>
</li>
</ul>
</div>
<a href="http://www.facebook.com" alt="Facebook" id="fb"><i class="fa fa-facebook-official"></i></a>
<a href="http://www.instagram.com" alt="Instagram" id="ig"><i class="fa fa-instagram"></i></a>
</div>
</nav>
查询:
$(window).ready(function() {
$(window).scroll(function () {
if ($(window).scrollTop() >= $('#navbar').offset().top) {
$('#navbar').addClass('sticky');
$('#logo').css('margin-left', '-70px');
$('#fb').css('right', '0');
$('#ig').css('right', '-70px')
}
else {
$('#navbar').removeClass('sticky');
$('#logo').css('margin-left', '-280px');
$('.social').css('margin-left', '-290px');
$('#fb').css('right', '-280px');
$('#ig').css('right', '-280px')
}
});
});
CSS:
#fb {
font-size: 40px;
right: -280px;
position: absolute;
transition: all 600ms;
}
#ig {
font-size: 40px;
right: -280px;
position: absolute;
transition: all 600ms;
}
#logo {
margin-left: -280px;
position: absolute;
top: 10px;
transition: all 600ms;
}
#navbar {
color: #ec8013;
font-family: 'Montserrat';
font-size: 18px;
font-weight: 500;
margin-top: -51px;
overflow: hidden;
padding: .5rem;
}
.nav-item {
margin-right: 20px;
margin-left: 20px;
}
.nav-link {
padding-top: 16px;
color: #ec8013!important;
transition: 0.2s;
box-sizing: border-box;
height: 55px;
}
.sticky {
position: fixed;
top: 0;
width: 100%;
}
解决方案
导航栏的 CSS 设置为将其粘贴在顶部:
.sticky {
position: fixed;
top: 0;
width: 100%;
}
如果你能计算出你需要的偏移量,就把它放在 top 属性中,如果是200px
,例如:
.sticky {
position: fixed;
top: 200px;
width: 100%;
}
推荐阅读
- python - 无法在 zsh 上安装 python 包但在 bash 上成功
- macos - 打开、拆分 iTerm2 窗口并在每个窗格中执行命令
- docker - vscode(Win 10)中的断点“未经验证”并且在 Linux Docker 容器(Hyper-V)中远程调试 Go 应用程序时未命中
- elasticsearch - 如何将 aws s3(json/csv 格式)上的数据插入、删除、更新到 aws elasticsearch 服务
- python - 实例子类化,为什么会产生新的实例?
- reactjs - 在哪里调用 api 来更新按钮单击时的子组件道具
- javascript - 我需要捕获输入字段的警告消息,但我的逻辑无法创建场景
- scala - 来自 Spark-Streaming 中 Kafka 消费者的 RDD 错误“任务尝试 0 已注册”
- matlab - 从一个给定位置开始查找向量中第一个非零值的位置
- java - Java/Jetty:TLS客户端认证中如何选择签名算法