您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)CSS中position屬性是什么的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。
position的含義是指定位類(lèi)型,取值類(lèi)型可以有:static、relative、absolute、fixed、inherit和sticky,這里sticky是CSS3新發(fā)布的一個(gè)屬性。
1、position: static
static(沒(méi)有定位)是position的默認(rèn)值,元素處于正常的文檔流中,會(huì)忽略left、top、right、bottom和z-index屬性。
2、position: relative
relative(相對(duì)定位)是指給元素設(shè)置相對(duì)于原本位置的定位,元素并不脫離文檔流,因此元素原本的位置會(huì)被保留,其他的元素位置不會(huì)受到影響。
3、position: absolute
absolute(絕對(duì)定位)是指給元素設(shè)置絕對(duì)的定位,相對(duì)定位的對(duì)象可以分為兩種情況:
1) 設(shè)置了absolute的元素如果存在有祖先元素設(shè)置了position屬性為relative或者absolute,則這時(shí)元素的定位對(duì)象為此已設(shè)置position屬性的祖先元素。
2) 如果并沒(méi)有設(shè)置了position屬性的祖先元素,則此時(shí)相對(duì)于body進(jìn)行定位。
4、position: fixed
可以簡(jiǎn)單說(shuō)fixed是特殊版的absolute,fixed元素總是相對(duì)于body定位的。
5、inherit
繼承父元素的position屬性,但需要注意的是IE8以及往前的版本都不支持inherit屬性。
在講sticky之前,先上代碼:
html:
<h5>Relative</h5>
<div class="div-container div-container1">
<div class="div1">static1</div>
<div class="div2">relative1</div>
<div class="div3">static1</div>
</div>
<h5>Absolute</h5>
<div class="div-container div-container2">
<div class="div1">static2</div>
<div class="div2">absolute2</div>
<div class="div3">static2</div>
</div>
<h5>Relative contains Absolute</h5>
<div class="div-container div-container3">
<div class="div1">static3</div>
<div class="div2">absolute3</div>
<div class="div3">static3</div>
</div>
<h5>Absolute contains Absolute</h5>
<div class="div-container div-container4">
<div class="div1">static3</div>
<div class="div2">absolute3</div>
<div class="div3">static3</div>
</div>
具體div的定位屬性可以看塊中的文字,顯示的效果如下,可以看到與上面講的一致:
6、sticky
position屬性中最有意思的就是sticky了,設(shè)置了sticky的元素,在屏幕范圍(viewport)時(shí)該元素的位置并不受到定位影響(設(shè)置是top、left等屬性無(wú)效),當(dāng)該元素的位置將要移出偏移范圍時(shí),定位又會(huì)變成fixed,根據(jù)設(shè)置的left、top等屬性成固定位置的效果。
可以知道sticky屬性有以下幾個(gè)特點(diǎn):
比較蛋疼的是這個(gè)屬性的兼容性還不是很好,目前仍是一個(gè)試驗(yàn)性的屬性,并不是W3C推薦的標(biāo)準(zhǔn)。它之所以會(huì)出現(xiàn),也是因?yàn)楸O(jiān)聽(tīng)scroll事件來(lái)實(shí)現(xiàn)粘性布局使瀏覽器進(jìn)入慢滾動(dòng)的模式,這與瀏覽器想要通過(guò)硬件加速來(lái)提升滾動(dòng)的體驗(yàn)是相悖的。
具體情況可以看下圖,基本上可以說(shuō)這個(gè)屬性使用的瀏覽器只有FireFox和iOS的Safari:
簡(jiǎn)單的說(shuō),要讓sticky屬性生效的條件有以下兩點(diǎn):
第一點(diǎn)上面已經(jīng)講過(guò)了,如果設(shè)置了top: 50px,那么元素在達(dá)到距離頂部50px時(shí)才會(huì)發(fā)生定位,否則并不會(huì)發(fā)生定位。
第二點(diǎn)則需要考慮父容器的高度情況:sticky元素在到達(dá)父容器的底部時(shí),則不會(huì)再發(fā)生定位,如果父容器高度并沒(méi)有比sticky元素高,那么sticky元素一開(kāi)始就達(dá)到了底部,并不會(huì)有定位的效果。
此外還有一點(diǎn)就是父元素的overflow屬性,如果父元素的overflow屬性并不是默認(rèn)的visible屬性,那么sticky元素則相對(duì)于該父元素定位。也就是如果要定位在頂部的話(huà),此時(shí)這個(gè)效果就無(wú)效了。
感謝各位的閱讀!關(guān)于CSS中position屬性是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。