該文章總結(jié)自張鑫旭慕課邮府,以及自己的使用經(jīng)驗和建議。
relative的具體作用
-
relative
限制absolute
- 限制偏移(絕對定位根據(jù)相對定位元素進(jìn)行偏移)
- 與
overflow: hidden
截斷隱藏超出部分(如果沒有relative
的overfloww:hidden
對于絕對定位的元素失效) -
relative
會影響本身有z-index
屬性的絕對定位元素(如果a
元素的z-index: 1;
,b
元素的z-index:3溉奕;
褂傀,此時a
在b
下面,假如a
的父元素有[relative
]的z-index: 3
加勤,而b
父元素有[relative
]的z-index:2
仙辟,不管a
和b
元素的z-index
如何,a
元素始終高于b
元素鳄梅。)
-
relative
與定位- 相對自身定位
- 無侵入叠国,不影響文檔流(跟
margin
比較一下) -
top
下bottom
失效,left
下right
失效 - 設(shè)置
relative
元素的圖片會蓋過沒有設(shè)置relative
的圖片(用margin-left: -xxpx
試一下就知道了)
-
新建層疊上下文與層級控制
上面講的
relative
影響層級情況就是新建層疊上下文的原因戴尸,又在上面的基礎(chǔ)上衍生出這些情況粟焊。- 如果
b
元素的帶有relative
的父元素的Z-index
設(shè)置為auto
時,此時父元素的relative
不再對子元素的z-index
有限制作用,所以此時b
的z-index
變成3
(層疊上下文不存在)项棠,此時b
便會超過a
- 但是這種情況不限于
ie6&ie7
悲雳,因為ie6&ie7
的z-index: auto
也會出現(xiàn)新建層疊上下文,此時也就是說a
依舊是比b
高的沾乘。(這是bug
)
- 如果
應(yīng)用
為了避免relative
覆蓋怜奖,有下面兩個經(jīng)驗應(yīng)用
避免使用
relative
(絕對定位不依賴于relative
,具體看絕對定位一節(jié))-
relative
最小化
把img定位在左上角,一般的做法是<div style="position: relative;"> <img style="position: absolute; top: 0;left: 0;"> <div></div> <div></div> <div></div> <div></div> </div>
這里會出現(xiàn)的問題就是很可能會因為父級的relative出現(xiàn)層級覆蓋翅阵。
現(xiàn)在可以這樣子做:
<div> <div style="position: relative;"> <img style="position: absolute; top: 0;left: 0;"> </div> <div></div> <div></div> <div></div> <div></div> </div>
以上歪玲, 便是實現(xiàn)relative最小化,這里面的div進(jìn)行相對定位以后并不會對布局造成任何影響掷匠。