饥人谷技术博客

inline-block、BFC、边距合并

2016-10-06  本文已影响0人  饥人谷__小圆

本教程版权归小圆和饥人谷所有,转载须说明来源

问答

1. 在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例

合并场景:相邻的两个盒子(有可能是兄弟关系也可能是父子关系)的外边距可以结合成一个单独的外边距。当一个元素没有内容、高度、边框以及内边距时,其自身的上下外边距也会发生合并。
如何合并:

如何不合并:

2. 去除inline-block内缝隙有哪几种常见方法?

3. 父容器使用overflow: auto | hidden撑开高度的原理是什么?

因为在元素浮动后,脱离文档流,父容器没有内容,所以会高度塌陷,而使用over:auto/hidden后,父元素形成了一个独立的空间(BFC),会计算内部浮动元素的高度。

4. BFC是什么?如何形成BFC,有什么作用?

BFC(Block formatting contexts):是一个独立的布局环境。BFC中的元素布局不受外界的影响(我们往往利用这个特性来消除浮动元素对其非浮动的兄弟元素和其子元素带来的影响),并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素组成)都会垂直的沿着其父元素的边框排列。
如何形成:浮动元素和绝对定位元素,非块级盒子的块级容器(例如inline-blocks, table-cells和teble-captions)以及overflow值不为"visiable"的块级盒子,都会为他们的内容创建新的BFC(块级格式上下文)。
作用:

5. 浮动导致的父容器高度塌陷指什么?为什么会产生?有几种解决方法

父元素高度塌陷:指子元素浮动后脱离文档流,父容器无法包围住子元素,导致父容器高度塌陷。
解决方法:

.box::after{
    content:"";
    display:block;
    clear:both;
} 
.left,.right{
    width:100px;
    height:100px;
    background:red;
    float:left;
}
<div class="box"> 
    <div class="left"></div> 
    <div class="right"></div> 
</div>
.box{
    float:left;
}
.left,.right{
    width:100px;
    height:100px;
    background:red;
    float:left;
}
<div class="box"> 
    <div class="left"></div> 
    <div class="right"></div> 
</div>
.box{
    overflow: hidden;
} //overflow:auto也是可以的 
.left,.right{
    width:100px;
    height:100px;
    background:red;
    float:left;
}
<divclass="box"> 
    <divclass="left"></div>
    <divclass="right"></div> 
</div>
.clear{
    clear:both;
} 
<divclass=”clear”></div>

6. 以下代码每一行的作用是什么? 为什么会产生作用? 和BFC撑开空间有什么区别?

.clearfix:after{        //使用伪元素
    content: '';        //添加的内容为空
    display: block;     //以块级元素形式显示
    clear: both;        //清除两侧浮动效果
}
.clearfix{ 
    *zoom: 1;           //使元素在IE6/7中也达到上述效果(兼容)
}
上一篇 下一篇

猜你喜欢

热点阅读