位置:粘不工作
我有这样的HTML代码:位置:粘不工作
<div class="header">
<div class="desc">Description</div>
<div class="logo"><img src=""/></div>
<div class="navbar"></div></div>
.header具有150像素的高度。 .navbar的高度为20px。当用户滚动时,我想让.navbar粘在顶部。所以我去了CSS并设置了位置:sticky和top:0。但是这不起作用。我最初认为firefox不支持位置:粘性,但事实并非如此,因为我能够看到它的工作演示。我搜索了一下,但没有发现任何帮助。任何人都知道为什么这不起作用?
,如果您将导航栏的标题外,它工作正常。见下文。至于原因,根据MDN:
该元件是根据文档的正常流动定位,然后相对于其流量根和包含基于顶部的值块,右偏移,底部和左侧。
对于包含块的:
含块是祖先到所述元件相对定位
所以,当我不要误会,导航栏是定位的只要它在视口外滚动(这显然意味着,你不能再看到它),在标题的偏移量0处。
.navbar {
background: hotpink;
width: 100%;
height: 50px;
position: -webkit-sticky;
position: sticky;
top: 0;
}
.header {
height: 150px;
background: grey;
}
body {
height: 800px;
position: relative;
}
<div class="header">
<div class="desc">Description</div>
<div class="logo"><img src=""/></div>
</div>
<div class="navbar"></div>
感谢您的回答! – Wolfuryo
将navbar作为问题中的标题元素,它也很粘稠。但直到它的容器结束。最初它在“说明”下面可见,并且在向下滚动时它将通过灰色标题移动。在灰色区域结束时,它将在容器(=标题)结束时停止。在这个答案中,导航栏容器是正文,所以这就是为什么它最初将在灰色页眉之后开始并一直向下滚动。 – Neepsnikeep
你的HTML代码,因为它是
<div class="header">
<div class="desc">Description</div>
<div class="logo"><img src=""/></div>
<div class="navbar"></div></div>
读写导航栏
.header {
height: 150px;
background-color: #d1d1d1;
}
.navbar {
background: #999;
border-bottom: 1px solid #333;
border-top: 1px solid #333;
color: #FFF;
margin: 0;
padding: 2px 0 0 12px;
position: -webkit-sticky;
position: sticky;
top: -1px;
}
希望CSS类,这将有助于
我已经试过了,没有任何成功。我试图添加position:sticky和top:0到.header元素,它可以工作,但这不是我想要的。 – Wolfuryo
我试图从标题容器中移出导航栏,它正在工作 –
不知怎的,你的代码时,.navbar
元素不是像头另一容器内才有效。我把它移出来,然后它工作正常。 I created a codepen snippet for that, check it out
<header>
<div class="logo">Logo</div>
<div class="description"><div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quo, veritatis.</div></div>
</header>
<div class="navbar">
<ul>
<li><a href="#">navitem1</a></li>
<li><a href="#">navitem2</a></li>
<li><a href="#">navitem3</a></li>
<li><a href="#">navitem4</a></li>
</ul>
</div>
眼下position:sticky
支持相当好,因为你可以看到canIuse。当然,IE目前没有支持,但新的Edge版本将为此提供全面支持!我发现有关此主题的一些有趣的文章:
- 工作演示(浏览器,Firefox)https://codepen.io/simevidas/pen/JbdJRZ
- Caniuse refernce:在MDN http://caniuse.com/#search=sticky
- 粘物品,包括最新的浏览器支持台https://developer.mozilla.org/en-US/docs/Web/CSS/position#Sticky_positioning
但在地平线上有好消息。我认为下一次会有更好的浏览器支持。
感谢您的回答! – Wolfuryo
对于其他任何碰到此问题的人,由于设置了overflow-x: hidden;
的body
元素,位置粘滞不适用于我。
你刚刚为我节省了很多时间。正在做一些重新塑造,无法弄清楚为什么位置sticky停止工作的生活。结果发现第三方在html和body上添加了溢出样式。啊! – mysticflute
这也帮了我很多。谢谢! – Popmatik
既然你不显示你的CSS ...只有当包含div(标题)没有隐藏或自动溢出时,粘滞只能工作。可能是要检查的东西。 – pinkfloydx33
对于正在研究这个问题的其他人来说,如果直接父母是'display:flex','position:sticky'也往往不起作用。 – user568458