css中position屬性使用詳解

CSS2.0的解釋:
設置此屬性值為 absolute 會將對象拖離出正常的文檔流絕對定位而不考慮它周圍內容的布局。假如其他具有不同 z-index 屬性的對象已經占據了給定的位置,他們之間不會相互影響,而會在同一位置層疊。此時對象不具有外補丁( margin ),但仍有內補丁( padding )和邊框( border )。
要激活對象的絕對(absolute)定位,必須指定 left , right , top , bottom 屬性中的至少一個,并且設置此屬性值為 absolute 。否則上述屬性會使用他們的默認值 auto ,這將導致對象遵從正常的HTML布局規(guī)則,在前一個對象之后立即被呈遞。
TRBL屬性(TOP、RIGHT、BOTTOM、LEFT)只有當設定了position屬性才有效。
當設定position:absolute
如果父級(無限)沒有設定position屬性,那么當前的absolute則結合TRBL屬性以瀏覽器左上角為原始點進行定位
如果父級(無限)設定position屬性,那么當前的absolute則結合TRBL屬性以父級(最近)的左上角為原始點進行定位。
當設定position: relative
則參照父級(最近)的內容區(qū)的左上角為原始點結合TRBL屬性進行定位(或者說相對于被定位元素在父級內容區(qū)中的上一個元素進行偏移),無父級則以BODY的左上角為原始點。相對定位是不能層疊的。在使用相對定位時,無論元素是否進行移動,元素依然占據原來的空間。因此,移動元素會導致它覆蓋其他框。
一般來講,網頁居中的話用Absolute就容易出錯,因為網頁一直是隨著分辨率的大小自動適應的,而Absolute則會以瀏覽器的左上角為原始點,不會應為分辨率的變化而變化位置。有時還需要依靠z-index來設定容器的上下關系,數值越大越在最上面,數值范圍是自然數。當然有一點要注意,父子關系是無法用z-index來設定上下關系的,一定是子級在上父級在下。
設置此屬性值為 relative 會保持對象在正常的HTML流中,但是它的位置可以根據它的前一個對象進行偏移。在相對(relative)定位對象之后的文本或對象占有他們自己的空間而不會覆蓋被定位對象的自然空間。與此不同的,在絕對(absolute)定位對象之后的文本或對象在被定位對象被拖離正常文檔流之前會占有它的自然空間。放置絕對(absolute)定位對象在可視區(qū)域之外會導致滾動條出現。而放置相對(relative)定位對象在可視區(qū)域之外,滾動條不會出現。其實對于定位的主要問題是要記住每個定位的意義。相對定位是“相對于“元素在文檔流中初始位置的,而絕對定位是”相對于“最近的已經定位的祖先元素。
以下是補充:
雖然有知道css的絕對定位(absolute)、相對定位(relative),但卻從未自己動手寫過相關的效果!
忙活了一大半天,也算是完成了!也把這兩個屬性搞明白了一些!
總結如下:
先看下面這一個層結構
<body>
<div id=posi>
<div id=rel> 此層只應用position:relative;樣式 </div>
<div id=abs> 此層只應用position:absolute;樣式 </div>
<div id=sss> 不應用樣式 <div>
</div>
</body>
1、absolute:不占位、relative:有占位!
如上層結構:
id為rel的層在顯示時,會占用一行!其后面的abs層只會在下一行顯示出來!
id為abs的層在顯示時,會與后面id為sss的重疊在一起!
2、默認情況下(不結合top等來定位),absolute(絕對定位)以父層來定位的
如上面的id為abs的層,如果不結合top等來定位,則其顯示位置會隨父級posi層(posi在文檔左下角,其也會在左下角)
3、在結合top、bottom、right、left等屬性時,absolute(絕對定位)以窗口做為定位,relative以自身的占位為基線做偏移!如下:
<body>
<div id=posi>
<div id=sss> 不應用樣式 <div>
<div id=rel> 此層應用position:relative;bottom:30px;樣式 </div>
<div id=abs> 此層只應用position:absolute;bottom:30px;樣式 </div>
</div>
</body>
以上代碼:
id為rel的層會上移并與id為sss的層重疊
id為abs的層會以窗口為基線,移至距離窗口30像素的位置!
4、在結合top、bottom、right、left等屬性時,如果想absolute(絕對定位)能以父層做為定位基線的話,則在父層應用absolute或relativ屬性就可以!如下:
<body>
<div id=posi style=”position:relative”>
<div id=rel> 此層應用position:relative;bottom:30px;樣式 </div>
<div id=abs> 此層只應用position:absolute;bottom:30px;樣式 </div>
</div>
</body>
以上代碼:id為posi的層,也可以用absolute屬性!
id為rel的層,不受影響,以自身的占位為基線做偏移!
id為abs的層是以id為posi層的底邊做為定位基線,如果此時posi層的高度小于30px的話,abs層可能沒辦法看到哦!
個人總結:
position:relative和position:absolute都可以改變元素在文檔中的位置,都能激活元素的left、top、right、bottom和z-index屬性。(默認這些屬性未激活,設置了也無效)
設置position:relative和position:absolute都會讓元素浮起來,會改變正常情況下的文檔流。
不同:
position:relative會保留自己在z-index:0層的占位,left、top、right、bottom值是相對于自己在z-index層的位置。
position:absolute會完全脫離文檔流,不再z-index:0層保留占位符,其left、top、right、bottom值是相對于自己最近的一個設置了position:relative或position:absolute的祖先元素的,如果祖先元素全都沒有設置,那么就相對于body元素
相關文章
css中定位中的absolute和relative是什么意思
做一些浮動層等特殊特殊效果時要考慮到定位問題就要用到Position屬性,其有四個屬性值:static、fixed、absolute和relative,想必后面兩個大家都熟悉吧2014-04-15CSS中的position:relative;的作用示例介紹
CSS中的position:relative是控制元素相對定位的,relative 不脫離文檔流而absolute 脫離文檔流,relative 的元素盡管表面上看到它偏離了原來的位置,但它實際上在文檔流中2013-11-05css relative相對定位的top值在不同瀏覽器中使用js獲取的差異
relative是指相對于這個對象原來所在位置(參照)的值,下面為大家將講解下使用js獲取時在IE、chrome、oprea等瀏覽器中的區(qū)別,感興趣的朋友可以參考下2013-10-24css中position:relative和overflow:hidden之間的問題
在父標簽中使用了overflow:hidden;時,如果子標簽中有元素的position設置成relative的時候,在IE6和IE7中父元素的overflow對其將不起作用,其實將父標簽的position也設置成2013-09-04css中position屬性(absolute|relative|static|fixed)概述及應用
position屬性的相關定義:static:無特殊定位,對象遵循正常文檔流;relative:對象遵循正常文檔流;absolute:對象脫離正常文檔流fixed:對象脫離正常文檔流,有興趣的朋友2013-04-08CSS position屬性absolute relative等五個值的解釋
目前幾乎所有主流的瀏覽器都支持position屬性("inherit"除外,"inherit"不支持所有包括IE8和之前版本IE瀏覽器,IE9、IE10還沒測試過),以下是w3school對position五個值的2012-12-15跨瀏覽器實現float:center-CSS教程-網頁制作-網頁教學網
原文: http://www.macji.com/blog/article/to-achieve-cross-browser-css-float-center/to-achieve-cross-browser-css-float-center/ 我們都知道float:left和float:rig2008-10-17css 使用relative設置top為百分比值的方法(仿百度首頁)
最近在學習HTML、CSS的過程中,想模仿一下百度首頁。發(fā)現搜索框這一部分與上下其它元素的空白距離可以隨著窗口大小變化,下面小編給大家?guī)砹薱ss 使用relative設置top為百2018-02-27