1.負邊距在讓元素產生偏移時和position: relative有什么區別?
答:使用負邊距的時候會改變元素在文檔流中的位置。負邊距的作用能拉動其他沒有脫離文檔流的元素,而設置position:relative之后元素原來在文檔流中占據的空間仍會保留,它只是相對于自己原來在文檔流中的位置進行偏移,如下圖所示:
使用負margin.png
使用position relative.png
2.使用負 margin 形成三欄布局有什么條件?
條件:
1、需要左右側邊欄及主內容均為浮動的塊級元素;
2、主內容需在最前面;
3、左側邊欄需設置margin-left為-100%,右側邊欄需設置margin-left為它本身寬度的負值;
3.圣杯布局的原理是怎樣的? 簡述實現圣杯布局的步驟
原理:采用負邊距使得浮動元素達到預設的位置后,再使用padding使得兩側留出空白區域待左、右邊距占用,然后再使用相對定位使得左、右邊距能夠流向預定的位置。
步驟:
①首先寫出圣杯布局的DOM結構
DOM結構.png
②對三個區塊設置浮動以及aside和extra的負邊距,讓它們飄到main上面。(在父容器清除浮動)
設置負margin.png
③最后設置父容器的內邊距為aside和extra的自身寬度(內邊距可大于aside和extra的自身寬度),并且對這倆欄設置相對定位為自身寬度。
Paste_Image.png
4.雙飛翼布局的原理? 實現步驟?
雙飛翼布局與圣杯布局的不同點在于,它不是用主區塊中設置padding來形成三欄的方式,而是在主區塊中設置一個子元素,再對這個子元素設置外邊距的值來形成三欄。
雙飛翼布局.png