您现在的位置:首页 >> 前端 >> 内容

BFC宽度自适应布局

时间:2017/8/2 16:38:18 点击:

  核心提示:BFC:块级格式化上下文,它指的是一个独立的块级渲染区域,只有Block-level Box参与,该区域拥有一套渲染规则来约束块级盒子的布局,且与区域外部无关。BFC的生成(1)float的值不为no...

BFC:块级格式化上下文,它指的是一个独立的块级渲染区域,只有Block-level Box参与,该区域拥有一套渲染规则来约束块级盒子的布局,且与区域外部无关。

BFC的生成

(1)float的值不为none;

(2)overflowd的值不为visible;

(3)display的值为inline-block, table-cell, table-caption;

(4)position的值为absolute或fixed;

BFC的约束规则

(1)生成的BFC元素的子元素会一个接一个的放置。垂直方向上他们的起点是一个包含块的顶部,两个相邻子元素之间垂直距离取决于元素的margin特性。在BFC中相邻的块级元素外边距会折叠。

(2)生成BFC元素的子元素中,每一个子元素的外边距和包含块的左边界相接处,(对于从右到左的格式化,右外边距和右边距相接触),除非这个子元素也创建了一个新的BFC(比如它自身也是一个浮动元素)。

有朋友对它做了分解,我们直接拿来:

(1)内部的BOX会在垂直方向上一个接一个的放置;

(2)垂直方向上的距离有margin决定。(完整的说法是:属于同一个BFC的俩个相邻的BOX的margin会发生重叠,与方向无关)

(3)每个元素的左外边距与包含块的左边距相接触(从左到右),即使浮动元素也是如此。(这说明BFCD子元素不会超出它的包含块,而position为absolute的元素可以超出它 包含块边界);

(4)BFC的区域不会与float的元素区域重叠;

(5)计算BFC的高度时,浮动子元素也参与计算;

(6)BFC就是页面上的一个隔离的容器,容器里面的子元素不会影响到外面的元素,反之亦然

BFC两栏自适应布局

html代码:

<p class="left"></p>
<p class="right"></p>

css代码

.left{
  width:200px;
  height:200px;
  background:red;
  float:left;
}
.right{
  height:200px;
  background:green;
  overflow:hidden;
}

运行以上代码,伸缩页面宽度,可以发现的确是自适应

或者:

.right{
  height:200px;
  background:green;
  display:table-cell;
  width:9000px;//宽度大于显示屏
}

BFC三栏布局

<p class="left"></p>
<p class="right"></p>
<p class="middle"></p>

css代码如下:

.left{
  width:200px;
  height:200px;
  float:left;
  background:red;
}
.right{
  width:200px;
  height:200px;
  float:right;
  background:green;
}
.middle{
  display:table-cell;
  width:9000px;
  *display:inline-block;
  *width:auto;
  height:200px;
  background:pink;
}

在这里*表示兼容IE6和IE7

Tags:BF FC C宽 宽度 
作者:网络 来源:michael851