css position 定位

如果下面的文字實(shí)在是無(wú)法理解透,那就記住這節(jié)課最后總結(jié)的一句話“如果用position來(lái)布局頁(yè)面,父級(jí)元素的position屬性必須為relative,而定位于父級(jí)內(nèi)部某個(gè)位置的元素,最好用absolute,因?yàn)樗皇芨讣?jí)元素的padding的屬性影響,當(dāng)然你也可以用position,不過(guò)到時(shí)候計(jì)算的時(shí)候不要忘記padding的值。”
任何元素的默認(rèn)position的屬性值均是static,靜態(tài)。這節(jié)課主要講講relative(相對(duì))以及absolute(絕對(duì))。
【position:absolute】
意思是:他的意思是絕對(duì)定位,他默認(rèn)參照瀏覽器的左上角,配合TOP、RIGHT、BOTTOM、LEFT(下面簡(jiǎn)稱TRBL)進(jìn)行定位,有以下屬性:
1)如果沒(méi)有TRBL,以父級(jí)的左上角,在沒(méi)有父級(jí)的時(shí)候,他是參照瀏覽器左上角,如果在沒(méi)有父級(jí)元素的情況下,存在文本,則以它前面
的最后一個(gè)文字的右上角為原點(diǎn)進(jìn)行定位但是不斷開(kāi)文字,覆蓋于上方。
2)如果設(shè)定TRBL,并且父級(jí)沒(méi)有設(shè)定position屬性,那么當(dāng)前的absolute則以瀏覽器左上角為原始點(diǎn)進(jìn)行定位,位置將由TRBL決定。
3)如果設(shè)定TRBL,并且父級(jí)設(shè)定position屬性(無(wú)論是absolute還是relative),則以父級(jí)的左上角為原點(diǎn)進(jìn)行定位,位置由TRBL決定。即使父級(jí)有Padding屬性,對(duì)其也不起作用,說(shuō)簡(jiǎn)單點(diǎn)就是:它只堅(jiān)持一點(diǎn),就以父級(jí)左上角為原點(diǎn)進(jìn)行定位,父級(jí)的padding對(duì)其根本沒(méi)有影響。
以上三點(diǎn)可以總結(jié)出,若想把一個(gè)定位屬性為absolute的元素定位于其父級(jí)元素內(nèi),只有滿足兩個(gè)條件,
第一:設(shè)定TRBL
第二:父級(jí)設(shè)定Position屬性
上面的這個(gè)總結(jié)非常重要,可以保證你在用absolue布局頁(yè)面的時(shí)候,不會(huì)錯(cuò)位,并且隨著瀏覽器的大小或者顯示器分辨率的大小,而不發(fā)生改變。
只要有一點(diǎn)不滿足,元素就會(huì)以瀏覽器左上角為原點(diǎn),這就是初學(xué)者容易犯錯(cuò)的一點(diǎn),已經(jīng)定位好的板塊,當(dāng)瀏覽器的大小改變,父級(jí)元素會(huì)隨之改變,但是設(shè)定Position屬性為absolute的板塊和父級(jí)元素的位置發(fā)生改變,錯(cuò)位了,這就是因?yàn)榇藭r(shí)元素以瀏覽器的右上角為原點(diǎn)的原因。
初學(xué)者很容易犯錯(cuò)的是,不清楚Position屬性為absolute的板塊,若想定位到父級(jí)板塊中,并且當(dāng)瀏覽器的大小改變或顯示器的分辨率改變,布局不發(fā)生改變,是需要滿足兩個(gè)條件的,只要有一點(diǎn)不滿足,元素就會(huì)以瀏覽器左上角為原點(diǎn),從而導(dǎo)致頁(yè)面布局錯(cuò)位。
【position:relative】
意思是相對(duì)定位,他是默認(rèn)參照父級(jí)的原始點(diǎn)為原始點(diǎn),無(wú)父級(jí)則以文本流的順序在上一個(gè)元素的底部為原始點(diǎn),配合TRBL進(jìn)行定位,當(dāng)父級(jí)內(nèi)有padding等CSS屬性時(shí),當(dāng)前級(jí)的原始點(diǎn)則參照父級(jí)內(nèi)容區(qū)的原始點(diǎn)進(jìn)行定位,有以下屬性:
1)如果沒(méi)有TRBL,以父級(jí)的左上角,在沒(méi)有父級(jí)的時(shí)候,他是參照瀏覽器左上角(到這里和absolute第一條一樣),如果在沒(méi)有父級(jí)元素的情況下,存在文本,則以文本的底部為原始點(diǎn)進(jìn)行定位并將文字?jǐn)嚅_(kāi)(和absolut不同)。
2)如果設(shè)定TRBL,并且父級(jí)沒(méi)有設(shè)定position屬性,仍舊以父級(jí)的左上角為原點(diǎn)進(jìn)行定位(和absolut不同)
3)如果設(shè)定TRBL,并且父級(jí)設(shè)定position屬性(無(wú)論是absolute還是relative),則以父級(jí)的左上角為原點(diǎn)進(jìn)行定位,位置由TRBL決定(前半段和absolut一樣)。如果父級(jí)有Padding屬性,那么就以內(nèi)容區(qū)域的左上角為原點(diǎn),進(jìn)行定位(后半段和absolut不同)。
以上三點(diǎn)可以總結(jié)出,無(wú)論父級(jí)存在不存在,無(wú)論有沒(méi)有TRBL,均是以父級(jí)的左上角進(jìn)行定位,但是父級(jí)的Padding屬性會(huì)對(duì)其影響。
綜合上面對(duì)relative的敘述,我們就可以將position屬性為relative的DIV視成可以用TRBL進(jìn)行定位的的普通DIV,或者說(shuō)只要將我們平時(shí)
布局頁(yè)面的div的CSS屬性中加上position:relative后,就不只是用float布局頁(yè)面了,還可以用TRBL進(jìn)行布局頁(yè)面了,或者說(shuō)加上
position:relative的DIV也可以像普通的DIV進(jìn)行布局頁(yè)面了,只不過(guò)還可以用TRBL進(jìn)行布局頁(yè)面。但是position屬性為absolute不可以
用來(lái)布局頁(yè)面,因?yàn)槿绻脕?lái)布局的話,所有的DIV都相對(duì)于瀏覽器的左上角定位了,所以只能用于將某個(gè)元素定位于屬性為absolute的
元素的內(nèi)部某個(gè)位置,這樣我們就可以總結(jié)比較重要的結(jié)論
屬性為relative的元素可以用來(lái)布局頁(yè)面,屬性為absolute的元素用來(lái)定位某元素在父級(jí)中的位置
既然屬性為absolute的元素用來(lái)定位某元素在父級(jí)中位置,就少不了TRBL,這時(shí)候根據(jù)一開(kāi)始講的absolute的第三條,如果父級(jí)元素沒(méi)有position屬性那么absolute元素就會(huì)脫離父級(jí)元素,但是如果是布局頁(yè)面,父級(jí)元素position的屬性又不能為absolute,不然就會(huì)以瀏覽器左上角為原點(diǎn)了,所以父級(jí)元素的position屬性只能為relative!
總結(jié):如果用position來(lái)布局頁(yè)面,父級(jí)元素的position屬性必須為relative,而定位于父級(jí)內(nèi)部某個(gè)位置的元素,最好用absolute,因?yàn)樗皇芨讣?jí)元素的padding的屬性影響,當(dāng)然你也可以用position,不過(guò)到時(shí)候計(jì)算的時(shí)候不要忘記padding的值。
相關(guān)文章
css中position:relative和overflow:hidden之間的問(wèn)題
在父標(biāo)簽中使用了overflow:hidden;時(shí),如果子標(biāo)簽中有元素的position設(shè)置成relative的時(shí)候,在IE6和IE7中父元素的overflow對(duì)其將不起作用,其實(shí)將父標(biāo)簽的position也設(shè)置成2013-09-04- CSS中主要難以理解的屬性包括盒型結(jié)構(gòu),以及定位。正如positioniseverything,本文將主要講述關(guān)于position的理解,新手朋友們可以學(xué)習(xí)下2013-09-03
- 下面與大家分享下使用position:fixed屬性讓DIV居中的關(guān)鍵代碼是position:fixed;left:0px;right:0px;width:706px;margin-left:auto;margin-right:auto,感興趣的朋友可以參2013-05-15
css中position屬性(absolute|relative|static|fixed)概述及應(yīng)用
position屬性的相關(guān)定義:static:無(wú)特殊定位,對(duì)象遵循正常文檔流;relative:對(duì)象遵循正常文檔流;absolute:對(duì)象脫離正常文檔流fixed:對(duì)象脫離正常文檔流,有興趣的朋友2013-04-08CSS position屬性的正確解釋和實(shí)例應(yīng)用
目前幾乎所有主流的瀏覽器都支持position屬性("inherit"除外,"inherit"不支持所有包括IE8和之前版本IE瀏覽器,IE9、IE10還沒(méi)測(cè)試過(guò)),以下是w3school對(duì)position五個(gè)值的2013-01-02CSS position屬性absolute relative等五個(gè)值的解釋
目前幾乎所有主流的瀏覽器都支持position屬性("inherit"除外,"inherit"不支持所有包括IE8和之前版本IE瀏覽器,IE9、IE10還沒(méi)測(cè)試過(guò)),以下是w3school對(duì)position五個(gè)值的2012-12-15CSS樣式position屬性的一個(gè)小實(shí)例:z方向三層布局分析
使用CSS樣式中的position屬性實(shí)現(xiàn)z方向三層布局效果,本文甚是疑惑,于是乎搜集整理一番,曬出代碼和大家分享一下2012-12-07CSS中背景background-position負(fù)值定位深入理解[圖文]
CSS中背景定位background-position負(fù)值一直是不好理解的難點(diǎn),一方面用的比較少,另一方面的理解的不夠深入,今天花了點(diǎn)時(shí)間認(rèn)真的思考了,把我的心得寫(xiě)出來(lái)2011-03-21- css position 基礎(chǔ)教程,非常經(jīng)典,推薦大家收藏。2010-03-06
- 網(wǎng)頁(yè)制作Webjx文章簡(jiǎn)介:position屬性可以讓你讓你隨意控制一個(gè)特定元素在瀏覽器何處以及如何顯示。比方說(shuō)我們用position:fixed 讓一個(gè)圖片顯示在瀏覽器的左上角.即使出現(xiàn)2009-04-02