maigin连写:
Margin: 20px 30px: 上下20px 左右30px
Margin: 20px 30px 40px: 上20px 左右30px 下 40px
Margin: 20px 30px 40px 50px: 上20px 右30px 下40px 左50px
垂直方向外边距合并:
两个盒子垂直一个设置上外边距,一个设置下外边距,取的设置较大的值。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> .box1{ 200px; height:100px; background-color:orange; margin-bottom:20px; } .box2{ 200px; height:100px; background-color:gray; margin-top:10px; } </style> </head> <body> <div class="box1"></div> <div class="box2"></div> </body> </html>
注释:上下两个盒子最后的距离不是30px,而是其中设值最大的20px。
嵌套的盒子外边距塌陷:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> .father{ /*overflow:hidden;*/ 400px; height:400px; background-color:gray; } .son{ 50px; height:50px; background-color:red; margin-top:20px; } </style> </head> <body> <div class="father"> <div class="son"></div> </div> </body> </html>
上面嵌套盒子设置了margin-top:20px,随着发生了父盒子也往下移动了20px。
解决办法是:
1 、给父盒子设置边框(因为当父盒子没有边框的时候,子盒子找外边距的时候会将浏览器作为参照的对象)
2、给父盒子overflow:hidden; bfc 格式化上下文
百分比继承:
margin-top:20%,这个继承关系是继承了父盒子的宽度,这很奇葩
<style> .parent { width: 200px; height: 100px; border: 1px solid #000; } .son { width: 50%; height: 50%; background-color: pink; /* 相对于父盒子的20% */ margin-top: 20%; } </style>