relative對absolute的限制作用:
- 限制left/top/right/bottom定位:
父元素使用了relative定位後,使用了absolute的子元素無法越過父元素進行定位; - 限制z-index層級:
使用了relative定位的同級元素,其本身的z-index值將決定其子元素的z-index層級; - 限制在overflow下的囂張氣焰:
子元素設置了absolute定位時,其父級元素的 overflow 屬性無法對該子元素進行有效約束。但父級元素再設置relative定位時,會把該子元素的超出部分砍掉。
relative對fixed的限制作用:
- 限制z-index層級: 與對absolute限制z-index的作用一樣。
relative自身的定位特性:
- 相對自身:即相對於原來自身的位置進行偏移;
- 無入侵:即不影響原來的文檔流。(應用:實現自定義拖拽)
relative元素設置了對立屬性:top/bottom 或 left/right 時:
結論:
1. 絕對定位是拉伸;
2. 相對定位是鬥爭。
top會使bottom無效,聲明left後則會導致right無效。
relative與z-index層級:
- 提高元素的層疊上下文:鬼畜級別,即相當有效。
- 新建層疊上下文與層級控制:
當元素的z-index爲一個具體的數值(包括0)時,設置了relative後會使元素新建層疊上下文,即元素的子元素層級會被該元素所約束。
在IE6/7以外的瀏覽器中,當元素的z-index爲auto時,即使設置了relative,元素也無法約束其子元素的層級(即子元素會參考更上級元素的層疊上下文進行層疊排序)。
relative的最小化影響原則:即儘量降低relative屬性對其他元素或佈局的潛在影響
- 儘量避免使用relative,子元素直接使用absolute,而父級元素不必要使用relative就可使子元素相對於父級元素進行定位(只要子元素不使用left、top等屬性即可,可使用margin-left、margin-top代替)
- 若子元素有很多同級的元素,應當將子元素拿出來與父級元素同級後,再爲其套一父元素,對該新父元素使用relative來實現子元素如右對齊的定位。可避免其原來的同級元素的層級關係被破壞