2016/5/31
1.在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例
-
相邻的兄弟元素外边距合并,两个元素都在正常的文档流里面,父亲没有边框或者padding,那它们之间就会产生外边距合并。合并的结果就是二者的最大值
-
父子元素外边距合并,合并的结果就是二者的最大值
- 总之,两个元素外边距之间没有存在边界线,没有任何阻挡就会出现外边距合并,(float和display:inlie-block比较特殊)甚至是它自身如果没有阻挡也会出现外边距的合并,边界线指的是border,padding,或者BFC
-
父子外边距合并的例子:
-
1.给父级元素加border消除:
-
给父级元素加padding消除:
-
-
加float属性
-
-
加display:inline-block;
-
-
5.形成BFC:
2.去除inline-block内缝隙有哪几种常见方法?
-
直接去掉空白
-
-
2.加负margin值,一般为-4px,此方法会发生偏移,以及其他问题,一般不建议适用。
-
3.给父元素添加overflow:auto,子元素添加float属性;
-
给父元素设置font-size:0,子元素加display:inline-block
-
3.父容器使用overflow: auto| hidden撑开高度的原理是什么?
父容器使用overflow: auto| hidden相当于给父容器定义为BFC,而BFC规定当这个父容器有子元素脱离文档流时,它会强制父元素将子元素包围起来,于是将高度撑开了。
4.BFC是什么?如何形成BFC,有什么作用?
-
父元素撑开,形成空间,形成独立的渲染效果。相当于形成一个盒子,盒子里面的元素不受盒子外面元素的影响,只受到盒子里面元素的影响。
-
形成BFC的方法:
1.给父级加display:inline-block;
2.给父级加overflow:auto;或者overflow:hidden;
3.给父级加float:left;
5.浮动导致的父容器高度塌陷指什么?为什么会产生?有几种解决方法
- 父容器无法支撑浮动元素,导致无法包裹浮动元素
- 解决方法:
- 1.给父级添加zoom:1
-
2。在父级下面加个空的相邻的子div,再clear:both清浮动
-
用伪元素,然后清浮动(改善语义化)
-
- 4.形成BFC,清浮动,通过给父级元素加overflow:auto(hidden);display:inline-block;float:left;
6.以下代码每一行的作用是什么? 为什么会产生作用? 和BFC撑开空间有什么区别?
.clearfix:after{//声明一个伪类
content: ''; //添加空白元素
display: block;//将其设置为块级元素
clear: both;//清除两侧浮动
}
.clearfix{
*zoom: 1;//是为了兼容IE,csshack
}