国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

詳解CSS中position屬性介紹(新增sticky)

2024-07-11 08:41:58
字體:
來源:轉載
供稿:網友

最近有點忘了position幾個取值的內容,在這里簡單總結一下。

position的含義是指定位類型,取值類型可以有:static、relative、absolute、fixed、inherit和sticky,這里sticky是CSS3新發布的一個屬性。

1、position: static

static(沒有定位)是position的默認值,元素處于正常的文檔流中,會忽略left、top、right、bottom和z-index屬性。

2、position: relative

relative(相對定位)是指給元素設置相對于原本位置的定位,元素并不脫離文檔流,因此元素原本的位置會被保留,其他的元素位置不會受到影響。

3、position: absolute

absolute(絕對定位)是指給元素設置絕對的定位,相對定位的對象可以分為兩種情況:

1) 設置了absolute的元素如果存在有祖先元素設置了position屬性為relative或者absolute,則這時元素的定位對象為此已設置position屬性的祖先元素。

2) 如果并沒有設置了position屬性的祖先元素,則此時相對于body進行定位。

4、position: fixed

可以簡單說fixed是特殊版的absolute,fixed元素總是相對于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了,設置了sticky的元素,在屏幕范圍(viewport)時該元素的位置并不受到定位影響(設置是top、left等屬性無效),當該元素的位置將要移出偏移范圍時,定位又會變成fixed,根據設置的left、top等屬性成固定位置的效果。

可以知道sticky屬性有以下幾個特點:

該元素并不脫離文檔流,仍然保留元素原本在文檔流中的位置。當元素在容器中被滾動超過指定的偏移值時,元素在容器內固定在指定位置。亦即如果你設置了top: 50px,那么在sticky元素到達距離相對定位的元素頂部50px的位置時固定,不再向上移動。元素固定的相對偏移是相對于離它最近的具有滾動框的祖先元素,如果祖先元素都不可以滾動,那么是相對于viewport來計算元素的偏移量

比較蛋疼的是這個屬性的兼容性還不是很好,目前仍是一個試驗性的屬性,并不是W3C推薦的標準。它之所以會出現,也是因為監聽scroll事件來實現粘性布局使瀏覽器進入慢滾動的模式,這與瀏覽器想要通過硬件加速來提升滾動的體驗是相悖的。

具體情況可以看下圖,基本上可以說這個屬性使用的瀏覽器只有FireFox和iOS的Safari:

簡單的說,要讓sticky屬性生效的條件有以下兩點:

一個是元素自身在文檔流中的位置另一個是該元素的父容器的邊緣

第一點上面已經講過了,如果設置了top: 50px,那么元素在達到距離頂部50px時才會發生定位,否則并不會發生定位。

第二點則需要考慮父容器的高度情況:sticky元素在到達父容器的底部時,則不會再發生定位,如果父容器高度并沒有比sticky元素高,那么sticky元素一開始就達到了底部,并不會有定位的效果。

此外還有一點就是父元素的overflow屬性,如果父元素的overflow屬性并不是默認的visible屬性,那么sticky元素則相對于該父元素定位。也就是如果要定位在頂部的話,此時這個效果就無效了。。。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 澄城县| 池州市| 饶阳县| 宜城市| 夏河县| 嘉荫县| 读书| 灵台县| 武功县| 渑池县| 武清区| 绩溪县| 宜黄县| 蕉岭县| 新和县| 贵州省| 哈密市| 保靖县| 阳新县| 马鞍山市| 奉节县| 彭泽县| 白玉县| 梅河口市| 金秀| 卫辉市| 阳高县| 泗水县| 西宁市| 德令哈市| 海城市| 新巴尔虎右旗| 华宁县| 肃宁县| 科技| 江油市| 丽水市| 治多县| 酉阳| 阿克陶县| 肇州县|