DIV CSS布局中position屬性用法深入探究

本文向大家描述一下DIV CSS布局中的position屬性的用法,position屬性主要有四種屬性值,任何元素的默認(rèn)position的屬性值均是static,靜態(tài)。這節(jié)課主要講講relative(相對)以及absolute(絕對)。
如何學(xué)習(xí)DIV+CSS布局之position屬性
如果用position屬性來布局頁面,父級元素的position屬性必須為relative,而定位于父級內(nèi)部某個(gè)位置的元素,最好用absolute。定位(position)布局頁面說容易非常容易,只需要記住這節(jié)課最后一句話就可以了,說困難,那是相當(dāng)?shù)碾y理解,需要一定的耐心,不過還好,KwooJan給大家總結(jié)的已經(jīng)很通俗易懂了。
如果下面的文字實(shí)在是無法理解透,那就記住這節(jié)課最后總結(jié)的一句話“如果用position來布局頁面,父級元素的position屬性必須為relative,而定位于父級內(nèi)部某個(gè)位置的元素,最好用absolute,因?yàn)樗皇芨讣壴氐膒adding的屬性影響,當(dāng)然你也可以用position,不過到時(shí)候計(jì)算的時(shí)候不要忘記padding的值。”
任何元素的默認(rèn)position的屬性值均是static,靜態(tài)。這節(jié)課主要講講relative(相對)以及absolute(絕對)。
【DIV+CSS布局之position屬性:absolute】
意思是:他的意思是絕對定位,他默認(rèn)參照瀏覽器的左上角,配合TOP、RIGHT、BOTTOM、LEFT(下面簡稱TRBL)進(jìn)行定位,有以下屬性:
1)如果沒有TRBL,以父級的左上角,在沒有父級的時(shí)候,他是參照瀏覽器左上角,如果在沒有父級元素的情況下,存在文本,則以它前面的最后一個(gè)文字的右上角為原點(diǎn)進(jìn)行定位但是不斷開文字,覆蓋于上方。
2)如果設(shè)定TRBL,并且父級沒有設(shè)定position屬性,那么當(dāng)前的absolute則以瀏覽器左上角為原始點(diǎn)進(jìn)行定位,位置將由TRBL決定。
3)如果設(shè)定TRBL,并且父級設(shè)定position屬性(無論是absolute還是relative),則以父級的左上角為原點(diǎn)進(jìn)行定位,位置由TRBL決定。即使父級有Padding屬性,對其也不起作用,說簡單點(diǎn)就是:它只堅(jiān)持一點(diǎn),就以父級左上角為原點(diǎn)進(jìn)行定位,父級的padding對其根本沒有影響。
以上三點(diǎn)可以總結(jié)出,若想把一個(gè)定位屬性為absolute的元素定位于其父級元素內(nèi),只有滿足兩個(gè)條件:
第一:設(shè)定TRBL
第二:父級設(shè)定Position屬性
上面的這個(gè)總結(jié)非常重要,可以保證你在用absolue布局頁面的時(shí)候,不會(huì)錯(cuò)位,并且隨著瀏覽器的大小或者顯示器分辨率的大小,而不發(fā)生改變。
只要有一點(diǎn)不滿足,元素就會(huì)以瀏覽器左上角為原點(diǎn),這就是初學(xué)者容易犯錯(cuò)的一點(diǎn),已經(jīng)定位好的板塊,當(dāng)瀏覽器的大小改變,父級元素會(huì)隨之改變,但是設(shè)定Position屬性為absolute的板塊和父級元素的位置發(fā)生改變,錯(cuò)位了,這就是因?yàn)榇藭r(shí)元素以瀏覽器的右上角為原點(diǎn)的原因。
初學(xué)者很容易犯錯(cuò)的是,不清楚Position屬性為absolute的板塊,若想定位到父級板塊中,并且當(dāng)瀏覽器的大小改變或顯示器的分辨率改變,布局不發(fā)生改變,是需要滿足兩個(gè)條件的,只要有一點(diǎn)不滿足,元素就會(huì)以瀏覽器左上角為原點(diǎn),從而導(dǎo)致頁面布局錯(cuò)位。
【DIV+CSS布局之position屬性:relative】
意思是相對定位,他是默認(rèn)參照父級的原始點(diǎn)為原始點(diǎn),無父級則以文本流的順序在上一個(gè)元素的底部為原始點(diǎn),配合TRBL進(jìn)行定位,當(dāng)父級內(nèi)有padding等CSS屬性時(shí),當(dāng)前級的原始點(diǎn)則參照父級內(nèi)容區(qū)的原始點(diǎn)進(jìn)行定位,有以下屬性:
1)如果沒有TRBL,以父級的左上角,在沒有父級的時(shí)候,他是參照瀏覽器左上角(到這里和absolute第一條一樣),如果在沒有父級元素的情況下,存在文本,則以文本的底部為原始點(diǎn)進(jìn)行定位并將文字?jǐn)嚅_(和absolut不同)。
2)如果設(shè)定TRBL,并且父級沒有設(shè)定position屬性,仍舊以父級的左上角為原點(diǎn)進(jìn)行定位(和absolut不同)
3)如果設(shè)定TRBL,并且父級設(shè)定position屬性(無論是absolute還是relative),則以父級的左上角為原點(diǎn)進(jìn)行定位,位置由TRBL決定(前半段和absolut一樣)。如果父級有Padding屬性,那么就以內(nèi)容區(qū)域的左上角為原點(diǎn),進(jìn)行定位(后半段和absolut不同)。
以上三點(diǎn)可以總結(jié)出,無論父級存在不存在,無論有沒有TRBL,均是以父級的左上角進(jìn)行定位,但是父級的Padding屬性會(huì)對其影響。
綜合上面對relative的敘述,我們就可以將position屬性為relative的DIV視成可以用TRBL進(jìn)行定位的的普通DIV,或者說只要將我們平時(shí)布局頁面的div的CSS屬性中加上position:relative后,就不只是用float布局頁面了,還可以用TRBL進(jìn)行布局頁面了,或者說加上position:relative的DIV也可以像普通的DIV進(jìn)行布局頁面了,只不過還可以用TRBL進(jìn)行布局頁面。但是position屬性為absolute不可以用來布局頁面,因?yàn)槿绻脕聿季值脑挘械腄IV都相對于瀏覽器的左上角定位了,所以只能用于將某個(gè)元素定位于屬性為absolute的元素的內(nèi)部某個(gè)位置。
這樣我們就可以總結(jié)比較重要的結(jié)論:
屬性為relative的元素可以用來布局頁面,屬性為absolute的元素用來定位某元素在父級中的位置,既然屬性為absolute的元素用來定位某元素在父級中位置,就少不了TRBL,這時(shí)候根據(jù)一開始講的absolute的第三條,如果父級元素沒有position屬性那么absolute元素就會(huì)脫離父級元素,但是如果是布局頁面,父級元素position的屬性又不能為absolute,不然就會(huì)以瀏覽器左上角為原點(diǎn)了,所以父級元素的position屬性只能為relative!
總結(jié):
如果用position來布局頁面,父級元素的position屬性必須為relative,而定位于父級內(nèi)部某個(gè)位置的元素,最好用absolute,因?yàn)樗皇芨讣壴氐膒adding的屬性影響,當(dāng)然你也可以用position,不過到時(shí)候計(jì)算的時(shí)候不要忘記padding的值。
相關(guān)文章
css實(shí)現(xiàn)文本和div居中對齊詳細(xì)講解示例
這篇文章主要介紹了css實(shí)現(xiàn)文本和div居中對齊詳細(xì)講解示例,需要的朋友可以參考下2014-05-05通過position定位實(shí)現(xiàn)div底端對齊
這篇文章主要介紹了通過position定位實(shí)現(xiàn)div底端對齊,感興趣的朋友可以參考下2014-04-02多個(gè)div中table的tdwidth設(shè)置一樣也不法對齊
最近發(fā)現(xiàn)多個(gè)div中table的td就算調(diào)成一樣的width也無法對齊,后來發(fā)現(xiàn)了解決方法,提到table-layout: fixed,經(jīng)設(shè)置效果相當(dāng)不錯(cuò),大家可以參考下2014-03-28圖片在div中垂直和水平同時(shí)對齊的實(shí)現(xiàn)方法
這篇文章主要介紹了關(guān)于圖片在div中垂直和水平同時(shí)對其的問題,下面有個(gè)不錯(cuò)的解決方法,大家可以參考下2014-03-28DIV和SPAN垂直居中對齊的實(shí)現(xiàn)方法
DIV和SPAN如何垂直居中對齊,水平居中很簡單,設(shè)置text-align:center就可以了,垂直居中一直很是疑惑,下面為大家解惑2014-02-20- 在某些時(shí)候可能需要將一個(gè)絕對定位的div在它的父對象中垂直居中對齊,可能用到的頻率不是太高,但是偶爾也會(huì)用到,下面就簡單介紹一下如何實(shí)現(xiàn)此功能2014-01-27
div中加入span右對齊后出現(xiàn)換行顯示兩種解決思路
div中加入span右對齊后,出現(xiàn)了換行問題,一般思路的話一定是認(rèn)為通過分開兩列,一個(gè)align=left,另一個(gè)align=right;很是疑惑,于是利用閑暇時(shí)間,搜索整理下,曬出來 2012-12-19 div 水平居中的實(shí)現(xiàn)方法。2009-10-15CSS讓圖片垂直居中和底端對齊的代碼-CSS教程-網(wǎng)頁制作-網(wǎng)頁教學(xué)網(wǎng)
本CSS教程提供了兩種對齊方式即垂直居中對齊和底端對齊!更多內(nèi)容請參考本站的CSS視頻教程。 CSS使圖片垂直居中的代碼: <!DOCTYPE html PUBLIC "-//W3C//DT2008-10-17這篇文章主要為大家詳細(xì)介紹了html5 div布局與table布局,區(qū)分div布局與table布局的異同,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-16最新評論
大家感興趣的內(nèi)容
- 1div圖片垂直居中 如何使div中圖片垂直居中
- 2css實(shí)現(xiàn)div自動(dòng)添加滾動(dòng)條(圖片或文字等超出時(shí)顯示)
- 3讓兩個(gè)Div并排顯示的多種方法
- 4圖片上添加文字的兩種常用方式
- 5限制div高度當(dāng)內(nèi)容多了溢出時(shí)顯示滾動(dòng)條
- 6div 背景透明度 如何設(shè)置一個(gè)div的背景透明度
- 7如何用CSS讓文字居于div的底部
- 8采用CSS定位屬性實(shí)現(xiàn)Html中DIV層疊與懸浮
- 9div 溢出隱藏 div文字溢出用點(diǎn)(省略號)代替
- 10設(shè)置DIV最小高度以及高度自適應(yīng)隨著內(nèi)容的變化而變化
最近更新的內(nèi)容