1.負邊距在讓元素產生偏移時和position: relative有什么區別?
使用負邊距會改變元素在文檔流中的位置,并且相鄰元素的位置也會受影響。而設置position:relative之后,元素自身會發生偏移,但是它在文檔流中占據的空間仍會保留,相鄰元素的位置不會受影響。
例:
2. 使用負 margin 形成三欄布局有什么條件?
- 三欄均為浮動的塊級元素,且父元素要設置清除浮動
- 主內容區塊放在最前面,左右側欄放其后
- 左側邊欄需設置margin-left為-100%,右側邊欄需設置margin-left為它本身寬度的負值
3. 圣杯布局的原理是怎樣的? 簡述實現圣杯布局的步驟
原理:使用負邊距使得左右兩側欄寬度固定,中間主區塊寬度自適應的布局方式。左右側邊欄和中間主區塊均設置浮動,然后中間主區塊設置padding使得兩側留出空白。左側邊欄需設置margin-left為-100%,右側邊欄需設置margin-left為它本身寬度的負值然后再使用相對定位使得左、右邊距能夠流向預定的位置。
步驟:
- 第一步:寫出圣杯布局的DOM結構(三個塊級元素包裹在父容器中,兩邊的側邊欄寬度固定,中間的主內容區塊寬度自適應)。
第一步
- 第二步:對三個區塊設置浮動,并且父容器要清除浮動。
第二步
- 第三步:設置第二個子元素margin-left:-100%,第三個子元素margin-left:本身寬度的負值,側邊欄的兩個子元素會往上覆蓋中間主區塊元素。
第三步
- 第四步:最后設置父容器的padding;然后使用定位,使左右欄流入相應的位置,這樣圣杯布局就完成了。
第四步
4. 雙飛翼布局的原理? 實現步驟?
原理:雙飛翼布局跟圣杯布局的不同點在于,它不是用主區塊中設置padding來形成三欄的方式,而是在其中間區塊中包裹一個子元素區塊做主內容,再對這個子元素設置外邊距的值來形成三欄。
步驟:
- 第一步:寫出雙飛翼布局的DOM結構
第一步
- 第二步:對三個區塊設置浮動,并且父容器要清除浮動。
第二步
- 第三步:設置第二個子元素margin-left:-100%,第三個子元素margin-left:本身寬度的負值,側邊欄的兩個子元素會往上覆蓋中間主區塊元素。
第三步
-第四步:在主區塊中設置一個子元素作主區塊內容,并設置該子元素的左右margin值(值根據左右側邊欄區塊寬度而定)。這樣雙飛翼布局就完成了。
第四步
本文版權歸本人及饑人谷所有,轉載請注明出處。