2017-08-06 57 views
2

我有這樣的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不支持位置:粘性,但事實並非如此,因爲我能夠看到它的工作演示。我搜索了一下,但沒有發現任何幫助。任何人都知道爲什麼這不起作用?

+2

既然你不顯示你的CSS ...只有當包含div(標題)沒有隱藏或自動溢出時,粘滯只能工作。可能是要檢查的東西。 – pinkfloydx33

+0

對於正在研究這個問題的其他人來說,如果直接父母是'display:flex','position:sticky'也往往不起作用。 – user568458

回答

3

,如果您將導航欄的標題外,它工作正常。見下文。至於原因,根據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>

+0

感謝您的回答! – Wolfuryo

+1

將navbar作爲問題中的標題元素,它也很粘稠。但直到它的容器結束。最初它在「說明」下面可見,並且在向下滾動時它將通過灰色標題移動。在灰色區域結束時,它將在容器(=標題)結束時停止。在這個答案中,導航欄容器是正文,所以這就是爲什麼它最初將在灰色頁眉之後開始並一直向下滾動。 – Neepsnikeep

0

你的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類,這將有助於

+0

我已經試過了,沒有任何成功。我試圖添加position:sticky和top:0到.header元素,它可以工作,但這不是我想要的。 – Wolfuryo

+0

我試圖從標題容器中移出導航欄,它正在工作 –

0

不知怎的,你的代碼時,.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版本將爲此提供全面支持!我發現有關此主題的一些有趣的文章:

但在地平線上有好消息。我認爲下一次會有更好的瀏覽器支持。

+0

感謝您的回答! – Wolfuryo

3

對於其他任何碰到此問題的人,由於設置了overflow-x: hidden;body元素,位置粘滯不適用於我。

+0

你剛剛爲我節省了很多時間。正在做一些重新塑造,無法弄清楚爲什麼位置sticky停止工作的生活。結果發現第三方在html和body上添加了溢出樣式。啊! – mysticflute

+0

這也幫了我很多。謝謝! – Popmatik