MARGIN負(fù)值在頁面布局中有哪些應(yīng)用?

大家好,我是IT修真院深圳分院第01期學(xué)員,一枚正直善良的web程序員。

今天給大家分享一下,修真院官網(wǎng) CSS任務(wù)中頁面布局部分可能會使用到的知識點(diǎn):

MARGIN負(fù)值在頁面布局中有哪些應(yīng)用?


1.背景介紹

CSS盒模型中,margin是我們非常熟悉的一個屬性,但是它的負(fù)值你用過嗎?


2.知識剖析

2.1、一個負(fù)margin應(yīng)該是這樣設(shè)置的:

和常規(guī)的margin相差無幾,不同的是將它的值設(shè)置為負(fù)數(shù)

A、負(fù)margin是絕對標(biāo)準(zhǔn)的CSS,W3C標(biāo)準(zhǔn)對于margin屬性來說,負(fù)值是合法的。

B、不脫離文檔流,不使用float的話,負(fù)margin元素是不會破壞頁面的文檔流。所以如果你使用負(fù)margin上移一個元素,所有跟隨它的元素都會被上移。

C、完全兼容,所有現(xiàn)代瀏覽器都完全支持負(fù)margin(IE6在大多數(shù)情況下也支持)。

D、浮動會影響負(fù)margin的使用,負(fù)margin不是你每天都用的CSS屬性,應(yīng)用時應(yīng)小心謹(jǐn)慎。


2.2、如果使用得當(dāng),負(fù)margin是非常強(qiáng)大的屬性,以下是幾種可以使用margin的場景。

? ? ? ?1、使用margin水平垂直居中


需要掌握元素的寬高

? ? ? ?2、實現(xiàn)圣杯布局,雙飛翼布局等

? ? ? ?3、實現(xiàn)元素位置偏移效果,以達(dá)到頁面布局目的


3.常見問題

? ?經(jīng)典的圣杯布局是怎么通過margin負(fù)值來實現(xiàn)的?



4.解決方案

曾經(jīng)有這樣一個經(jīng)典的需求:

? ? ? ?1、兩欄抑或三欄布局,主體自適應(yīng)寬度;

? ? ? ?2、一個或兩個側(cè)邊欄固定寬度;

? ? ? ?3、主體部分HTML結(jié)構(gòu)在最前面(網(wǎng)速慢時可以優(yōu)先顯示,對SEO有利);

? ? ? ?4、自適應(yīng)高度,且不影響等高;

? ? ? ?5、兼容IE6+,firefox,chrome,opera。 于是乎margin負(fù)值便大放光彩,首先是國外出現(xiàn)的圣杯布局,掀起一股margin負(fù)值熱潮。

首先將三個塊狀元素設(shè)置左浮動


然后設(shè)置sub和extra的margin-left為負(fù)值,將它們浮動到main的左右兩側(cè)即可


經(jīng)典的圣杯布局,通過margin負(fù)值和float實現(xiàn)


5.擴(kuò)展思考

margin負(fù)值是否會改變元素的寬度?


首先有一個ul元素,初始width是460


然后添加一個margin負(fù)值,它的width就發(fā)生變化了

需要注意的是,如果提前設(shè)置ul的width,則上述效果無效


6.參考文獻(xiàn)

CSS布局騷操作之-強(qiáng)大的負(fù)邊距

圣杯布局和雙飛翼布局

負(fù)margin在頁面布局中的應(yīng)用


7.更多討論

詳見視頻:


_騰訊視頻


問:margin負(fù)值對浮動元素有什么影響?

? ? ? 答:如上述的圣杯布局實現(xiàn)原理,后面的元素會覆蓋前面的元素;

問:margin負(fù)值對元素寬度是否有影響?

? ? ? 答:如果元素本身未設(shè)置width屬性,那么margin負(fù)值則會影響它的寬度;

問:margin負(fù)值還能運(yùn)用到哪些地方?

? ? ? 答:。。。


感謝大家觀看!

今天的分享就到這里啦,歡迎大家點(diǎn)贊、轉(zhuǎn)發(fā)、留言、拍磚~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容