外边距重叠(英文margin collapse,MDN 的解释如下:
块的顶部和底部边距有时合并(折叠)为单个边距,其大小是单个边距(或者是单个边距中最大的一个,如果它们相等的话),这种行为称为边距折叠。注意,浮动和绝对定位元素的边距永远不会崩溃。
这种情况并不是浏览器的bug,而是为某些情景而设计的,如下:
<section class="design"> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam harum volutes ulema, quia venial sung in maiores option laboriously, harum minus veritas destruct selectus repellent's eacute nostrum vitae! Amet, alias. </p> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam harum volutes ulema, quia venial sung in maiores option laboriously, harum minus veritas destruct selectus repellent's eacute nostrum vitae! Amet, alias. </p> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam harum volutes ulema, quia venial sung in maiores option laboriously, harum minus veritas destruct selectus repellent's eacute nostrum vitae! Amet, alias. </p> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam harum volutes ulema, quia venial sung in maiores option laboriously, harum minus veritas destruct selectus repellent's eacute nostrum vitae! Amet, alias. </p></section>
为了让段落分明,一般会给上margin
p{ text-indent: 2em; margin: 1.7em 0;}
当你打开控制台查看p标签的时候,会发现他们间隔是一样的,也就是为了这种情况而设计的,不过也产生了一种生产环境经常遇到的「bug」,叫margin collapse,也就是外边距重叠了
💡 注意,会造成外边距重叠的情况,只有垂直方向上的块级盒子
前端的布局有三种:
后两个都会脱离文档流,接下来要讲的BFC,就是属于普通流一种
BFC会形成独立的渲染区域,使得内部元素的渲染不会影响到外界
//主要代码,为了方便看到效果,给了背景色// rgb(228, 99, 48)<div class="content_box"> <img src="./img/selfie.jpg"/> // rgb(168, 218, 235) <div class="statement"> <p>...</p> <p>...</p> </div></div>
.content_box { display: flow-root;}
.statement{ padding-left: 2em; display: flow-root;}
p{ margin: 1.7em 0;}
<div class="statement"> <div> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam harum volutes ulema, quia venial sung in maiores option laboriously, harum minus veritas destruct selectus repellent's eacute nostrum vitae! Amet, alias. </p> </div> <div> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam harum volutes ulema, quia venial sung in maiores option laboriously, harum minus veritas destruct selectus repellent's eacute nostrum vitae! Amet, alias. </p> </div></div>
.statement div{ display: flow-root;}
创建BFC有以下(用得比较多得加黑了
code inline.
提示:display: flow-root,contain: layout 等是无副作用的,可在不影响已有布局的情况下触发 BFC,所以会用的比较多 a