轉(zhuǎn)載文章:https://www.cnblogs.com/s1nker/p/4835079.html
sticky
position屬性中最有意思的就是sticky了,設(shè)置了sticky的元素却紧,在屏幕范圍(viewport)時該元素的位置并不受到定位影響(設(shè)置是top贱傀、left等屬性無效),當(dāng)該元素的位置將要移出偏移范圍時伊脓,定位又會變成fixed府寒,根據(jù)設(shè)置的left、top等屬性成固定位置的效果报腔。
可以知道sticky屬性有以下幾個特點:
該元素并不脫離文檔流株搔,仍然保留元素原本在文檔流中的位置。
當(dāng)元素在容器中被滾動超過指定的偏移值時纯蛾,元素在容器內(nèi)固定在指定位置纤房。亦即如果你設(shè)置了top: 50px,那么在sticky元素到達(dá)距離相對定位的元素頂部50px的位置時固定翻诉,不再向上移動炮姨。
元素固定的相對偏移是相對于離它最近的具有滾動框的祖先元素,如果祖先元素都不可以滾動碰煌,那么是相對于viewport來計算元素的偏移量
比較蛋疼的是這個屬性的兼容性還不是很好舒岸,目前仍是一個試驗性的屬性,并不是W3C推薦的標(biāo)準(zhǔn)芦圾。它之所以會出現(xiàn)蛾派,也是因為監(jiān)聽scroll事件來實現(xiàn)粘性布局使瀏覽器進(jìn)入慢滾動的模式,這與瀏覽器想要通過硬件加速來提升滾動的體驗是相悖的个少。
具體情況可以看下圖洪乍,基本上可以說這個屬性使用的瀏覽器只有FireFox和iOS的Safari:
簡單的說,要讓sticky屬性生效的條件有以下兩點:
一個是元素自身在文檔流中的位置
另一個是該元素的父容器的邊緣
第一點上面已經(jīng)講過了夜焦,如果設(shè)置了top: 50px壳澳,那么元素在達(dá)到距離頂部50px時才會發(fā)生定位,否則并不會發(fā)生定位茫经。
第二點則需要考慮父容器的高度情況:sticky元素在到達(dá)父容器的底部時钾埂,則不會再發(fā)生定位河闰,如果父容器高度并沒有比sticky元素高,那么sticky元素一開始就達(dá)到了底部褥紫,并不會有定位的效果姜性。
此外還有一點就是父元素的overflow屬性,如果父元素的overflow屬性并不是默認(rèn)的visible屬性髓考,那么sticky元素則相對于該父元素定位部念。也就是如果要定位在頂部的話,此時這個效果就無效了氨菇。儡炼。。
<!doctype html>
<html>
<head>
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 400px;
height: 200px;
overflow: auto;
margin: 0 auto;
}
.description {
color: #000;
}
.stickly {
position: sticky;
top: 0;
left: 0;
background: rgb(136, 136, 125);
color: #fff;
}
</style>
</head>
<body>
<div class="box">
<div class="stickly">
吸頂效果
</div>
<div class="description">
人生的游戲不在于拿了一副好牌查蓉,而在于怎樣去打好壞牌乌询,世上沒有常勝將軍,勇于超越自我者才能得到最后的獎杯豌研。
</div>
<div class="stickly">
吸頂效果
</div>
<div class="description">
人在身處逆境時妹田,適應(yīng)環(huán)境的能力實在驚人。人可以忍受不幸鹃共,也可以戰(zhàn)勝不幸鬼佣,因為人有著驚人的潛力,只要立志發(fā)揮它霜浴,就一定能渡過難關(guān)晶衷。
</div>
<div class="stickly">
吸頂效果
</div>
<div class="description">
人在身處逆境時,適應(yīng)環(huán)境的能力實在驚人阴孟。人可以忍受不幸晌纫,也可以戰(zhàn)勝不幸,因為人有著驚人的潛力永丝,只要立志發(fā)揮它缸匪,就一定能渡過難關(guān)。
</div>
<div class="stickly">
吸頂效果
</div>
<div class="description">
人在身處逆境時类溢,適應(yīng)環(huán)境的能力實在驚人凌蔬。人可以忍受不幸,也可以戰(zhàn)勝不幸闯冷,因為人有著驚人的潛力砂心,只要立志發(fā)揮它,就一定能渡過難關(guān)蛇耀。
</div>
<div class="stickly">
吸頂效果
</div>
<div class="description">
人在身處逆境時辩诞,適應(yīng)環(huán)境的能力實在驚人。人可以忍受不幸纺涤,也可以戰(zhàn)勝不幸译暂,因為人有著驚人的潛力抠忘,只要立志發(fā)揮它,就一定能渡過難關(guān)外永。
</div>
<div class="stickly">
吸頂效果
</div>
<div class="description">
人在身處逆境時崎脉,適應(yīng)環(huán)境的能力實在驚人。人可以忍受不幸伯顶,也可以戰(zhàn)勝不幸囚灼,因為人有著驚人的潛力,只要立志發(fā)揮它祭衩,就一定能渡過難關(guān)灶体。
</div>
<div class="stickly">
吸頂效果
</div>
</div>
</body>
</html>