在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ 如何從原理上解釋外邊距折疊問題的產(chǎn)生?

如何從原理上解釋外邊距折疊問題的產(chǎn)生?

在我剛剛學(xué)習(xí)前端的時(shí)候接觸過邊距折疊問題 知道可以觸發(fā)bfc去解決
今天回顧以前寫的文章時(shí)我突然想知道為什么會(huì)產(chǎn)生外邊距折疊 不是指觸發(fā)情況 這個(gè)我知道
就是從瀏覽器的渲染機(jī)制上或者說從原理上來講為什么會(huì)產(chǎn)生邊距折疊

以下是一些概念:
外邊距折疊:指的是毗鄰的兩個(gè)或多個(gè)外邊距 (margin) 在垂直方向會(huì)合并成一個(gè)外邊距。
可以通過以下方式阻止:
在父層div加上:overflow:hidden;
把margin-top外邊距改成padding-top內(nèi)邊距;
父元素產(chǎn)生邊距重疊的邊有不為 0 的 padding 或?qū)挾炔粸?0 且 style 不為 none 的 border,父層div加:padding-top: 1px,或者 border-top:1px ;
設(shè)置父元素或子元素浮動(dòng)(left/right)
設(shè)置父元素dispaly:inline-block或者display:table-cell;
給父元素加上絕對(duì)定位
也就是讓它不在滿足外邊距坍塌所需條件或者觸發(fā)BFC來解決外邊距坍塌問題

折疊產(chǎn)生的情況如下:
必須是處于常規(guī)文檔流(非float和絕對(duì)定位)的塊級(jí)盒子,并且處于同一個(gè)BFC當(dāng)中。
沒有線盒,沒有空隙,沒有padding和border將他們分隔開(ps :所以解決辦法中有padding或者border兩種辦法)
都屬于垂直方向上相鄰的外邊距

回答
編輯回答
呆萌傻

算是個(gè)歷史遺留問題。引用一篇文章的話

CSS的基本模型是排版。只是前端工程師現(xiàn)在做得更多的是 布局 而非 文字排版,但CSS并未界定這兩者的區(qū)別。而 margin 折疊是為實(shí)現(xiàn)文本排版的段落間距而提供的特性。

2017年3月6日 08:59