inline-block、BFC欢际、邊距合并

在什么場景下會出現(xiàn)外邊距合并?如何合并矾兜?如何不讓相鄰元素外邊距合并损趋?給個父子外邊距合并的范例

在什么場景下會出現(xiàn)外邊距合并?

  • 相鄰元素:當(dāng)兩個垂直外邊距相遇時椅寺,它們將形成一個外邊距浑槽。合并后的外邊距的高度等于兩個發(fā)生合并的外邊距的高度中的較大者。
  • 父子元素:當(dāng)一個元素包含在另一個元素中時(假設(shè)沒有內(nèi)邊距或邊框把外邊距分隔開)返帕,它們的上和/或下外邊距也會發(fā)生合并桐玻。
  • 元素自身上下margin:當(dāng)一個元素內(nèi)部沒有高度和內(nèi)容以及沒有內(nèi)邊距和邊框時,它自身的上下外邊距也會發(fā)生合并荆萤。

如何合并镊靴?

  • 全部都為正值,取最大者链韭;
  • 不全是正值偏竟,則都取絕對值,然后用正值減去最大值敞峭;
  • 沒有正值踊谋,則都取絕對值,然后用0減去最大值旋讹。

如何不讓相鄰元素外邊距合并殖蚕?

  1. 相鄰的盒模型中轿衔,如果其中的一個是浮動的(floated),垂直margin不會被折疊睦疫,甚至一個浮動的盒模型和它的子元素之間也是這樣害驹。
  2. 設(shè)置了overflow屬性的元素和它的子元素之間的margin不會被折疊(overflow取值為visible除外)。
  3. 設(shè)置了絕對定位(position:absolute)的盒模型笼痛,垂直margin不會被折疊裙秋,甚至和他們的子元素之間也是一樣。
  4. 設(shè)置了display:inline-block的元素缨伊,垂直margin不會被折疊摘刑,甚至和他們的子元素之間也是一樣。

父子外邊距合并范例

父子外邊距合并

父元素的上邊距為20px刻坊,子元素的上邊距為40枷恕,最終合并為父元素上邊距為40px。

去除inline-block內(nèi)縫隙有哪幾種常見方法?
  • 去掉html里的空格
1
  • 標(biāo)簽結(jié)束符換行
2
  • 使用負(fù)margin
3
  • 設(shè)置浮動
4
  • 設(shè)置父容器font-size值為0谭胚。(注意這種情況下一定要給子元素單獨設(shè)置font-size)
5
父容器使用overflow: auto| hidden撐開高度的原理是什么徐块?
  1. BFC (Block Formatting Context)全稱是塊級格式化上下文,用于對塊級元素排版灾而,默認(rèn)情況下只有根元素(body)一個塊級上下文胡控,但是如果一個塊級元素 設(shè)置了float:left,overflow:auto|hidden或position:absolute樣式旁趟,就會為這個塊級元素生成一個獨立的塊圾上下文昼激,就像在window全局作用域內(nèi),聲明了一個function就會生成 一個獨立的作用域一樣锡搜,新開僻的BFC像是開僻了一個新的小宇宙橙困,使這個塊圾元素內(nèi)部的排版完全獨立隔絕。
  2. 獨立的塊級上下文可以包裹浮動流耕餐,全部浮動子元素也不會引起容器高度塌陷凡傅,也就是說包含塊會把浮動元素的高度也計算在內(nèi),所以不用清除浮動來撐起高度肠缔。
    overflow: auto| hidden清除浮動原理
BFC是什么夏跷?如何形成BFC,有什么作用?

BFC:塊級格式化上下文桩砰,它是指一個獨立的塊級渲染區(qū)域拓春,只有Block-level BOX參與,該區(qū)域擁有一套渲染規(guī)則來約束塊級盒子的布局亚隅,且與區(qū)域外部無關(guān)硼莽。

如何形成BFC
既然BFC是一塊渲染區(qū)域,那這塊渲染區(qū)域到底在哪,它又是有多大懂鸵,這些由生成BFC的元素決定偏螺,CSS2.1中規(guī)定滿足下列CSS聲明之一的元素便會生成BFC。

  • 根元素
  • float的值不為none
  • overflow的值不為visible
  • display的值為inline-block匆光、table-cell套像、table-caption
  • position的值為absolute或fixed

有人說display:table也認(rèn)為可以生成BFC,其實這里的主要原因在于Table會默認(rèn)生成一個匿名的table-cell终息,正是這個匿名的table-ccell生成了BFC夺巩。

有什么作用?

  • 要阻止margin重疊。
  • 清除浮動
  • 多欄布局
    參考資料
浮動導(dǎo)致的父容器高度塌陷指什么周崭?為什么會產(chǎn)生柳譬?有幾種解決方法?

浮動導(dǎo)致的父容器高度塌陷指什么?為什么會產(chǎn)生续镇?
如果父元素只包含浮動元素美澳,且父元素未設(shè)置高度和寬度的時候。那么它的高度就會塌縮為零摸航。
由于浮動塊不在文檔的普通流中制跟,所以文檔的普通流中的塊表現(xiàn)得就像浮動塊不存在一樣。它不再處于文檔流中酱虎,所以它不占據(jù)空間雨膨,父級容器的高度即不會被撐開,導(dǎo)致高度塌陷的現(xiàn)象读串。

有幾種解決方法哥放?

  1. 在使用float元素的父元素結(jié)束前加一個高為0寬為0且有clear:both樣式的div


    1
  2. 在使用float元素的父元素添加overflow: auto| hidden;


    2
  3. 使用after偽對象清除浮動


    3
以下代碼每一行的作用是什么? 為什么會產(chǎn)生作用爹土? 和BFC撐開空間有什么區(qū)別?
.clearfix:after{ /*定義一個樣式為clearfix元素的after偽類樣式*/
    content: ''; /*內(nèi)容為空*/
    display: block; /*表現(xiàn)為塊級元素*/
    clear: both;/*消除兩旁浮動*/
}
.clearfix{ 
    *zoom: 1;/*hack寫法踩身。IE6 IE7能識別胀茵。觸發(fā)IE瀏覽器的haslayout,用于解決IE下的浮動問題*/
}

他就是利用:after在元素內(nèi)部插入元素塊挟阻,從而達(dá)到清除浮動的效果琼娘。

和BFC撐開空間有什么區(qū)別?
BFC會形成獨立空間附鸽,讓元素內(nèi)部內(nèi)容與區(qū)域外部無關(guān)脱拼。而上述方法是添加一個父容器能感知到的元素從而讓它被撐開。

本教程版權(quán)歸作者和饑人谷所有坷备,轉(zhuǎn)載須說明來源熄浓!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市省撑,隨后出現(xiàn)的幾起案子赌蔑,更是在濱河造成了極大的恐慌俯在,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娃惯,死亡現(xiàn)場離奇詭異跷乐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)趾浅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門愕提,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人皿哨,你說我怎么就攤上這事浅侨。” “怎么了往史?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵仗颈,是天一觀的道長。 經(jīng)常有香客問我椎例,道長挨决,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任订歪,我火速辦了婚禮脖祈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘刷晋。我一直安慰自己盖高,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布眼虱。 她就那樣靜靜地躺著喻奥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捏悬。 梳的紋絲不亂的頭發(fā)上撞蚕,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天,我揣著相機(jī)與錄音过牙,去河邊找鬼甥厦。 笑死,一個胖子當(dāng)著我的面吹牛寇钉,可吹牛的內(nèi)容都是我干的刀疙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼扫倡,長吁一口氣:“原來是場噩夢啊……” “哼谦秧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤油够,失蹤者是張志新(化名)和其女友劉穎蚁袭,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體石咬,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡揩悄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鬼悠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片删性。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖焕窝,靈堂內(nèi)的尸體忽然破棺而出蹬挺,到底是詐尸還是另有隱情,我是刑警寧澤它掂,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布巴帮,位于F島的核電站,受9級特大地震影響虐秋,放射性物質(zhì)發(fā)生泄漏榕茧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一客给、第九天 我趴在偏房一處隱蔽的房頂上張望用押。 院中可真熱鬧,春花似錦靶剑、人聲如沸蜻拨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缎讼。三九已至,卻和暖如春坑匠,著一層夾襖步出監(jiān)牢的瞬間休涤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工笛辟, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人序苏。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓手幢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親忱详。 傳聞我的和親對象是個殘疾皇子围来,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

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