一、margin合并
css经典bug 两个块级元素 分别设置 margin-bottom 和 margin-top 并不能达到预期效果
<style> .up{ width: 200px; height: 50px; background: blue; margin-bottom: 50px; } .down{ width: 200px; height: 50px; background: pink; margin-top: 50px; } </style> </head> <body> <div class="up"></div> <div class="down"></div> </body>
上面代码的最终效果 中间的距离 并不是margin-top + margin-bottom 而是 两者 中取大的那个 的值 就像 合并到了一
解决方法
给 up 和 down 都加上父级 并给父级设置 overflow:hidden
margin塌陷
wrapper 包裹 box wrapper的margin-top和box的margin-top 取最大值 且 box 紧紧贴纸 wrapper的人上边 并不是 box相对wrapper 取 margin-top
<style> .wrapper{ width: 200px; height: 200px; background: rgb(228, 143, 143); } .box{ width: 50px; height: 50px; margin-top: 20px; border: 1px solid blue; } </style> </head> <body> <div class="wrapper"> <div class="box"></div> </div> </body>
解决方法
1.利用給父级添加 border 来触发 bfc效果
类似子集看不见父级的边界 添加一个 border 来解决 但改变 父级的样式 (舍去)
2.利用給父级添加 overflow 属性触发 bfc
bfc
block format context 块级格式化上下文
触发bfc 的方法
postion: absolute;
display: inline-block;
overflow: hidden;
float:left/right