【发布时间】:2025-12-05 18:45:02
【问题描述】:
我在这里查看了关于此的非常相似的问题,但似乎都将导航栏放在包装器中,而我没有。
虽然结果相似。当我的导航栏贴在顶部时,通过应用 .sticky 并赋予它“位置:固定”,它会稍微增加宽度,但由于文本对齐,会产生明显的影响。
为什么其他div的宽度小于navbar静态时的宽度?它们不应该都是 100% 的视口吗?
如何阻止这种情况发生?
任何建议表示赞赏!
学习
const navBanner = document.getElementById("navBanner");
const sticky = navBanner.offsetTop;
window.onscroll=function(){
if (window.pageYOffset >= sticky) {
navBanner.classList.add("sticky");
} else {
navBanner.classList.remove("sticky");
}
};
body{
font-family: 'Open Sans', sans-serif;
}
.banner{
padding-top:10px;
padding-bottom: 10px;
text-align: center;
}
#titleBanner{
height: 300px;
padding-top:200px;
background-color: lightgray;
color: white;
}
#navBanner{
height: 25px;
background-color: lightgray;
overflow: hidden;
width: 100%;
}
#navBanner a{
text-decoration: none;
color: black;
}
#navBanner a[href="#techBanner"]{
margin-left: 400px;
margin-right: 400px;
}
.sticky {
position: fixed;
top: 0;
background-color: darkgray !important;
color: white !important
}
#techBanner{
height: 300px;
background-color: lightgray;
width: 100%;
}
h1{
font-size: 500%;
font-family: sans-serif;
}
#profBanner{
padding: 150px;
border: solid black 1px;
}
#profile{
width:50%;
margin: auto;
text-align: justify;
}
#contactBanner{
height:1000px;
}
<div id="titleBanner" class="banner">
<h1>Lorem ipsum dolor</h1>
</div>
<div class="banner" id="navBanner">
<a class="link" href="#profBanner">About me</a>
<a class="link" href="#techBanner">Technical</a>
<a class="link" href="#contactBanner">Contact</a>
</div>
<div class="banner" id="profBanner">
<div id="profile">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id lobortis lorem, ac aliquet nunc. Mauris vel est viverra, malesuada metus a, vehicula quam. Vestibulum a pretium felis, eget porta massa. Proin dui augue, mollis ac blandit ut, egestas non augue. Fusce at nisl vel nulla mollis dictum. Praesent ut metus luctus, maximus velit vel, pulvinar mauris. </p>
</div>
</div>
<div id="techBanner">
</div>
<div id="contactBanner">
</div>
【问题讨论】:
-
固定位置以窗口为参考,而不是其父窗口;)所以宽度:100%实际上是相似的宽度:100vw。您可以在固定位置使用左右坐标代替宽度一次。
-
静态定位元素的宽度是相对于其父元素的宽度,而不是视口宽度。通过应用
position: fixed;,width: 100%;指的是 100% 的视口宽度。要么使用100vw而不是100%,要么删除body的margin以使 body 为 100% 视口宽度。 -
@G-Cyr 我现在修正了我的评论。
标签: javascript html css css-position