[inline-block] [BFC] [边距合并]

2016-08-21  本文已影响41人  jrg_memo
1 在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例
2 去除inline-block内缝隙有哪几种常见方法?

1 去除标签之间的空格(即不换行or拆开标签)
2 使用负margin
3 使用float
4 给父容器设置font-size=0
例子

去除inline-block内缝隙的几种常见方法
3 父容器使用overflow: auto| hidden撑开高度的原理是什么?

理解1:
overflow:hidden 的意思是超出的部分要裁切隐藏掉
那么如果 float 的元素不占普通流位置
普通流的包含块要根据内容高度裁切隐藏
如果高度是默认值auto
那么不计算其内浮动元素高度就裁切
就有可能会裁掉float
这是反布局常识的

所以如果没有明确设定容器高情况下
它要计算内容全部高度才能确定在什么位置hidden
浮动的高度就要被计算进去
顺带达成了清理浮动的目标
来源:知乎

理解2:
overflow:hidden 触发BFC
根据BFC规则:计算BFC的高度时,浮动元素也参与计算

4 BFC是什么?如何形成BFC,有什么作用?
5 浮动导致的父容器高度塌陷指什么?为什么会产生?有几种解决方法
6 以下代码每一行的作用是什么? 为什么会产生作用? 和BFC撑开空间有什么区别?
  .clearfix:after{           在class=clearfix的div后添加一个伪元素         
   content: '';              内容为空(多与伪元素配合使用)
   display: block;           显示为一个块级元素(行内元素无法撑起高度)
   clear: both;              左右清除浮动             
  }
  .clearfix{                  IE6/7通过zoom:1可以触发hasLayout
   *zoom: 1;                  用来清除浮动、避免容器高度崩塌的。
  }

区别:
BFC是形成一个独立空间来包容浮动元素
这个方法是利用伪元素清除浮动将父容器撑开

上一篇 下一篇

猜你喜欢

热点阅读