您好,登錄后才能下訂單哦!
如何理解css中position的五個屬性,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
在實際開發頁面布局時,運用position,對定位的塊級元素的嵌套的效果總是不太理解,這里做了幾個測試
一般的在w3c中我們可以很容易的獲取定義:
static : 默認值。沒有定位,元素出現在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)。
fixed :生成絕對定位的元素,相對于瀏覽器窗口進行定位。元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進行規定。
inherit :規定應該從父元素繼承 position 屬性的值。
absolute : 生成絕對定位的元素,相對于 static 定位以外的第一個父元素進行定位。元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進行規定。
relative : 生成相對定位的元素,相對于其正常位置進行定位。因此,"left:20" 會向元素的 LEFT 位置添加 20 像素。
總的來說 :
static呢,就是正常的文檔流順序,默認的,相當于沒有定位!
fixed呢, 就是相對于瀏覽器窗口,就是你滾動條怎么滾動,他還是那個位置,就想是 “粘” 在窗口上了!
inherit呢, 就是從父元素繼承 position 屬性的值,
absolute呢,是脫離文檔流的原來的位置是不繼續占據了,如果他的父級元素中有已經定位了的不管是absolute的還是relative,它都會相對于他的父級元素來定位,如果他的父級元素中沒有定位了的那么它就是相對于body來定位的。也就是說absolute的絕對是有參照物的!
relative呢,是不會脫離文檔流的原來的位置也就繼續占據了,它是只相對于自身原來的位置來定位的!
前三個是很容易理解的,對于absolute和relative的結合使用,做了幾個測試
測試(absolute和relative)
1.單獨的absolute和relative
2.relative中的relative,absolute中的relative
3.absolute中的absolute,relative中的absolute
代碼如下:
<!DOCTYPE html>
<html>
<head>
<title>position -- absolute -- relative</title>
</head>
<style>
.test-a{
position: absolute;
top:20px;
left:60px;
width:200px;
height: 100px;
background: red;
}
.test{
width:400px;
height: 100px;
background: green;
}
.test-r{
position:relative;
top:50px;
left:130px;
background: yellow;
width:160px;
height: 180px;
}
.test-rr{
position: relative;
top: 20px;
left: 100px;
width: 600px;
height: 300px;
background: blue;
}
.test-aa{
position: absolute;
top: 24px;
left: 34px;
background: orange;
}
.test-aaa{
position: absolute;
top: 24px;
left: 34px;
width:400px;
height:200px;
background: #18E457;
}
.test-aaaa{
position: absolute;
top: 124px;
left: 134px;
width:400px;
height:200px;
background: yellow;
}
.test-rrr{
position: relative;
top: 24px;
left: 34px;
width:400px;
height:200px;
background: yellow;
}
.test-rrr{
position: relative;
top: 124px;
left: 134px;
width:400px;
height:200px;
background: red;
}
.test-r-a{
position: absolute;
top: 124px;
left: 134px;
width:800px;
height:800px;
background: yellow;
}
.test-a-r{
position: relative;
top: 124px;
left: 134px;
width:700px;
height:700px;
background: red;
}
</style>
<body>
<div class="test-a">absolute</div>
<div class="test">分割</div>
<div class="test-r">relative</div>
<h3 >結合使用</h3>
<p>parentNode的position不是relative或absolute,那absolute的絕對對象是針對body的
parentNode的position 是relative或absolute,那absolute的絕對對象是針對parentNode的
也就是說absolute的絕對是有參照Node的 </p>
<div class="test-rr">
absolute外的relative
<div class="test-aa">
relative內的absolute,,,里面這個div是相對外面那個div定位的
</div>
</div>
<div class="test-aaa">
absolute外的absolute
<div class="test-aaaa">
absolute內的absolute,,,,,,,,里面這個div是相對外面那個div定位的
</div>
</div>
<div class="test-rrr" >
relative外的relative
<div class="test-rrrr">
relative內的relative,,,,,,,,里面這個div是相對原來位置定位的
</div>
</div>
<div class="test-r-a">
relative外的absolute
<div class="test">
<div class="test-a-r">
relative內的absolute,,,里面這個div是相對原來位置定位的
</div>
</div>
</div>
</body>
</html>
其實很多時候,網上的經驗,很多很雜,自己實踐一下,才能自己真正理解。
CSS中三大position屬性值用法解讀
本文向大家簡單介紹一下CSS中position屬性值的使用,主要包括static:默認值,relative:相對定位,absolute:絕對定位三種,主要用于定位html元素的位置,并影響元素塊生成的方式,相信本文介紹對你一定會有所幫助。
CSS中position屬性值用法
CSS中position屬性有4種可選值:static,relative,absolute,fixed,用于定位html元素的位置,并影響元素塊生成的方式。這里我們重點看一下position屬性的三個取值定義:position:static、absolute、relative。
static:默認值
如果沒有指定position屬性值,支持position屬性的html對象都是默認為static,可以這么理解:把html頁面看作一個文檔流,源代碼中各個標簽的先后位置就是它們所對應的對象的呈現次序,所有取值為static的對象都按照你所編寫的html標簽的順序依次呈現。
relative:相對定位
此position屬性值保持對象所在文檔流中的位置,也就是說它具有和static相同的呈現方式,它同樣占有在文檔流中的固定位置,后面的對象不會侵占或覆蓋;與static屬性值不同的是,設置了relative的對象,可以通過top,left,right,bottom屬性設定自己的新顯示位置,這4個屬性的取值是相對于文檔流的前一個對象的,你可以自由設置這4個屬性偏移到新的位置而不對文檔流中的其他對象產生任何影響,原來的頁面呈現仍然會我行我素.
absolute:絕對定位
和relative不同的是,這個position屬性值會將當前對象拖出文檔流,后面的對象會占有原來的位置,也就是說,當前對象的呈現是獨立顯示的,但是它的位置在指定top,left,right,bottom任一屬性之前仍是有繼承性的,這時的4個屬性的取值是相對于瀏覽器的,和文檔流無關了。如果把示例中的B區域設定為absolute而不指定4個位置屬性,通過設定margin來改變它的相對位置,用這個方法可以解決前面提到的問題2。
億速云溫馨提示:
屬性值為absolute對象的z-index屬性可以設置層疊顯示的次序,它是直接有效的;而屬性值為relative對象的z-index屬性在設置時要小心,把當前對象的z-index設置為-1是不行的,在firefox中它會無法顯示(注意,不是說瀏覽器有誤,而是指如果父對象是根元素body,那么z-index是無效的,任何z-index設置都不會顯示在根元素之后,除了IE的解析bug,感謝#19提示),必須設置為0以上,我們如果想讓別的對象擋住它,只有將其他對象也設置position為relative,并將z-index屬性取一個比它大的值即可。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。