css中margin的深入了解

談到margin就不得不提起到css盒模型,盒模型為外邊距+邊框+內(nèi)邊距+內(nèi)容區(qū)域,這里我們不談IE下的怪異模式冠场。

?margin即是盒模型的外邊距秆剪,并且透明赊淑,分隔開不同的盒模型。

1仅讽,margin重疊

margin在塊狀元素水平方向上是不存在重疊問題的陶缺,而在垂直方向上存在重疊問題。

? ?(1)洁灵,為什么存在重疊現(xiàn)象饱岸?

? 當(dāng)多個(gè)p標(biāo)簽設(shè)置margin:10px掺出,如果不存在margin重疊的話,表現(xiàn)如下:


圖一

? 當(dāng)存在margin重疊現(xiàn)象時(shí)苫费,表現(xiàn)如下:


圖二


?圖一圖二可以看出汤锨,margin重疊的話,每個(gè)p標(biāo)簽之間的間距就會(huì)相等百框,不會(huì)存在第一個(gè)和最后一個(gè)間距過小闲礼,看上去不協(xié)調(diào)的感覺。

(2)铐维,margin重疊的三種情況

第一種柬泽,父級(jí)與第一個(gè)或者最后一個(gè)子級(jí)元素外邊距重疊。

margin-top重疊成立條件

1嫁蛇,父級(jí)元素非塊級(jí)格式化上下文

2聂抢,父級(jí)元素?zé)oborder-top屬性

3,父級(jí)元素?zé)opadding-top屬性

4棠众,父級(jí)元素和第一個(gè)子級(jí)元素之間有inline分隔

margin-bottom重疊成立條件

1琳疏,父級(jí)元素非塊級(jí)格式化上下文

2,父級(jí)元素?zé)oborder-bottom屬性

3闸拿,父級(jí)元素?zé)opadding-bottom屬性

4空盼,父級(jí)元素和第一個(gè)子級(jí)元素之間有inline分隔

5,父元素?zé)o固定的高度設(shè)置

第二種新荤,空block元素標(biāo)簽外邊距重疊

1揽趾,本身沒有border屬性

2,本身沒有padding屬性

3苛骨,本身內(nèi)部無inline元素

4篱瞎,本身沒有高度屬性

第三種,多個(gè)p標(biāo)簽同樣的margin值

不需要清除margin重疊的影響

(3)痒芝,margin重疊的計(jì)算

1俐筋,正正取大值

重疊的部分根據(jù)最大的值為外邊距

2,正負(fù)值相加

重疊的部分相加后為外邊距

3严衬,負(fù)負(fù)取最小

重疊的值最小的那個(gè)為外邊距

2澄者,margin:auto的實(shí)用

?一個(gè)普通塊級(jí)元素,如div,在不設(shè)置寬度的情況下會(huì)占據(jù)一行请琳,margin在不考慮瀏覽器的情況下默認(rèn)可以看做是0粱挡,左右均沒有空隙,效果很簡單俄精,就不上圖了询筏。

? 當(dāng)對(duì)該div定寬的時(shí)候,div右側(cè)的空白間距就是margin的auto可支配的寬度竖慧,我們暫時(shí)稱可支配的寬度為W嫌套,此時(shí)對(duì)此div設(shè)置margin:auto時(shí)局冰,代碼如下:

#box{

width: 200px;

margin: auto;

background: #ddd;

}

<div id='box'></div>

效果如下:


圖三

?從圖三可以看出,水平方向上灌危,div已經(jīng)居中了康二,可支配的寬度W被平均的分配到左右兩側(cè)。

? 垂直方向上勇蝙,因?yàn)樵诓唤o父元素設(shè)置高度的情況下沫勿,不存在可支配的高度,所以在垂直方向上auto無效味混。

3产雹,margin無效

(1),inline元素

? 內(nèi)聯(lián)元素span,i等標(biāo)簽再設(shè)置margin-top或者margin-bottom的時(shí)候是無效的翁锡,沒有作用掂僵。

(2)贪壳,table-cell

在table-cell中我們最好用padding來代替margin趟畏。

(3)蕉扮,絕對(duì)定位對(duì)立方向

例如:

.box{

position:absolute;

top:10%;

left:20%;

}

對(duì)于上面元素,他的margin-bottom和margin-right沒有效果角溃,因?yàn)?box由于有一個(gè)top值拷获,距離下部距離過大,設(shè)置margin-bottom過小的話是沒有反應(yīng)的减细,除非設(shè)置很大的值匆瓜。

(4),浮動(dòng)元素

圖四

兩列布局未蝌,左側(cè)圖片浮動(dòng)驮吱,右側(cè)普通p標(biāo)簽包裹的文字,我們想讓圖片和文字之間有間距的萧吠,如果p標(biāo)簽margin-left過小的話左冬,右側(cè)就不會(huì)移動(dòng)。

4怎憋,margin的單位

margin單位有px,%又碌,當(dāng)他的單位為%的時(shí)候,如

.father{

? ?width:400px;

? ?height:500px;

}

.son{

? margin:50%;

}

此時(shí).son相當(dāng)于

.son{

? margin-top:200px;

? margin-left:200px;

? margin-right:200px;

? margin-bottom:200px;

}

簡而言之绊袋,百分比是以父級(jí)元素的寬度的百分比計(jì)算的。

當(dāng)div元素本身是絕對(duì)定位時(shí)铸鹰,margin百分比是根據(jù)第一個(gè)定位祖先元素(relative/absolute/fiexd)的寬度來確定的癌别。

5,margin的實(shí)用

(1)蹋笼,margin和absolute實(shí)現(xiàn)居中效果

.father{

position:relative;

width:100%;

height:400px;

}

.son{

position:absolute;

top:0;left:0;right:0;bottom:0;

margin:auto;

}

(2)展姐,margin實(shí)現(xiàn)增加容器空間

圖五

增加ul的樣式margin-right: -10px;

圖六
圖七

如圖五躁垛,我們讓一行l(wèi)i排列,往往都有一個(gè)margin值來調(diào)整間距圾笨,而到了最后一個(gè)往往被擠下去教馆,我們可以單獨(dú)設(shè)置最后一個(gè)li的margin值來調(diào)整。

這里我們可以給父元素一個(gè)margin-right:-10px擂达,margin改變?nèi)萜鞯恼紦?jù)尺寸(容器寬度不能是定值土铺,否則無效),這樣就會(huì)如圖七所示板鬓。排列到一行了悲敷,而不需要單獨(dú)給最后一個(gè)或者第一個(gè)單獨(dú)寫margin。

另外俭令,只有當(dāng)父元素寬度為auto的時(shí)候才有效后德,因?yàn)樵O(shè)置固定的寬度值后margin就無法改變?nèi)萜髡紦?jù)內(nèi)容了。

(3)抄腔,margin實(shí)現(xiàn)左右兩列等高布局


圖八

代碼如下:

圖九

左右等高布局是用到margin負(fù)值和padding來填充margin負(fù)值隱藏掉的內(nèi)容瓢湃,并且需要左右元素均為浮動(dòng)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赫蛇,一起剝皮案震驚了整個(gè)濱河市箱季,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌棍掐,老刑警劉巖藏雏,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異作煌,居然都是意外死亡掘殴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門粟誓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奏寨,“玉大人,你說我怎么就攤上這事鹰服〔⊥” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵悲酷,是天一觀的道長套菜。 經(jīng)常有香客問我,道長设易,這世上最難降的妖魔是什么逗柴? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮顿肺,結(jié)果婚禮上戏溺,老公的妹妹穿的比我還像新娘渣蜗。我一直安慰自己,他們只是感情好旷祸,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布耕拷。 她就那樣靜靜地躺著,像睡著了一般托享。 火紅的嫁衣襯著肌膚如雪骚烧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天嫌吠,我揣著相機(jī)與錄音止潘,去河邊找鬼。 笑死辫诅,一個(gè)胖子當(dāng)著我的面吹牛凭戴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播炕矮,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼么夫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肤视?” 一聲冷哼從身側(cè)響起档痪,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎邢滑,沒想到半個(gè)月后腐螟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡困后,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年乐纸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摇予。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡汽绢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出侧戴,到底是詐尸還是另有隱情宁昭,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布酗宋,位于F島的核電站积仗,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏本缠。R本人自食惡果不足惜斥扛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丹锹。 院中可真熱鬧稀颁,春花似錦、人聲如沸楣黍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽租漂。三九已至阶女,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哩治,已是汗流浹背秃踩。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留业筏,地道東北人憔杨。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像蒜胖,于是被迫代替她去往敵國和親消别。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容