BFC&边距合并-Assignment

2016-05-28  本文已影响51人  犯迷糊的小羊

问答题

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

外边距出现场景包括:


解决方案是在父元素中添加border或padding

设置padding情况下 设置border情况下

解决方案是在使用float/display:inline-block/为相邻的子元素生产BFC

float情形
.child-3,.child-4{
    float:left;
}
 <div class="box">
        <div class="child child-3"></div>
        <div class="child child-4"></div>
    </div>
}
inline-block情形
.child-3,.child-4{
    display:inline-block;
    /*使用display时要注意child-3的margin-top会发生不规则偏移 */
}
<div class="box">
        <div class="child child-3"></div>
        <div class="child child-4"></div>
    </div>
生成BFC
 .ctn-3,ctn-4{
    overflow:hidden;
    /*  为child-3和child-4分别添加盒子,并将盒子进行BFC; */
    }
<div class="box">
      <div class="ctn-3">
        <div class="child child-3"></div>
      </div>
      <div class="ctn-4">
        <div class="child child-4"></div>
      </div>
    </div>

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

去除inline-block的间隙包括:

inline-block默认下的间隙
<ul class="box">
  <li>html</li><li>css</li><li>javascript</li>
利用float清除间隙
li{
  font-size:30px;
  display:inline-block;
  background:lightblue;
  float:left;
}
利用负边距清除间隙
li{
  font-size:30px;
  display:inline-block;
  background:lightblue;
  margin-left:-4px;
}
li:first-child{
  margin:0;
}

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

父容器在使用overflow: auto| hidden后使其产生BFC,从而为float开辟出一个独立的空间,撑开父容器的高度。

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

BFC是什么
如何形成BFC

根据w3c的定义:

浮动元素、绝对定位元素、非块级元素的块级容器(如inline-block,table-cells,and table-captions)和overflow值不为visible的块级元素,这些元素都会为它们的内容建立BFC。

因此,建立BFC的方式有:

BFC的作用

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

解释:浮动元素脱离文档流导致其内容消失在父容器中,由于父容器高度为自适应,即其高度全靠子元素内容撑开,子元素消失而父容器高度自然塌陷

方块1和2未添加浮动
浮动导致的高度塌陷
.box{
  width:300px;
  border:5px solid pink;
  /* float:left; */
  
  /* position:absolute; */
  
  /* display:inline-block; */
  /* display:table-cell; */
  /* display:table-caption; */
  
  overflow:hidden;
  /* overflow:auto; */
}

[syntax]
.box:after{
  content:"a";
  display:block;
  clear:both;
}

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

.clearfix:after{
 content: ''; 
display: block; 
clear: both;
}
.clearfix{
 *zoom: 1;
}

代码题

任务11-代码

上一篇 下一篇

猜你喜欢

热点阅读