首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CSS之盒模型(二)

根据盒模型解释边距重叠

代码如下:

CSS 盒模型

html *{

padding:px;

margin:px;

}

#parent

{

background:#ff0000;

}

#child

{

height:100px;

margin-top:10px;

background:#009dff;

}

那么父元素 section 的高度是多少呢?

在Chrome Computed 中可以很明显的看到父元素section 的高度是100px,但给父元素增加一个overflow 后 ,父元素高度变为了110px 。

其实,添加一个overflow ,就是给父级元素创建了一个BFC(块级格式化上下文)边距重叠解决方案

1、BFC是什么?

BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。

2、BFC原理 ?

在BFC元素的垂直方向的边距会发生重叠

BFC的区域不会与浮动元素Box重叠(用来清除浮动不布局)

BFC在页面上是一个独立的容器,外面的元素不会影响里面的元素,里面的元素也不会影响外面的元素

计算BFC高度的时候,浮动元素也会参与计算。

3、如何创建BFC?

根元素或其它包含它的元素

浮动 (元素的 float 不为 none)

绝对定位元素 (元素的 position 为 absolute 或 fixed)

行内块 inline-blocks (元素的 display: inline-block)

表格单元格 (元素的 display: table-cell,HTML表格单元格默认属性)

表格标题 (元素的 display: table-caption, HTML表格标题默认属性)

overflow 的值不为 visible的元素

弹性盒 flex boxes (元素的 display: flex 或 inline-flex)

4、BFC 应用场景

4.1 如果在页面布局中不想有重叠, 就给子元素添加一个父元素,这个父元素创建一个BFC 。

#margin{

background:#ff0000;

overflow:hidden;

}

#margin>p{

margin:5px auto30px;

background:#1aff1e;

}

1

2

3

#margin{

background:#ff0000;

overflow:hidden;

}

#margin>p{

margin:5px auto30px;

background:#1aff1e;

}

1

2

3

4.2 布局BFC应用

#layout{

background:#009dff;

}

#layout.left{

float:left;

width:300px;

height:100px;

background:#ff0000;

}

#layout.right{

height:110px;

background:#1aff1e;

}

zuo

you

使用float,当右侧div 高度高于左侧时,右侧div会侵入左侧的div ,很显然这种布局不符合我们的目的,这时,我们就需要给右侧div 创建一个BFC以解决这种困境。

#layout{

background:#009dff;

}

#layout.left{

float:left;

width:300px;

height:100px;

background:#ff0000;

}

#layout.right{

height:110px;

background:#1aff1e;

overflow:hidden;

}

zuo

you

4.3 BFC 不与float 重叠

#float{

background:#ff0000;

}

#float.float{

float:left;

}

浮动元素

父级元素遭遇浮动子元素的时候,高度计算没有包含进来。将父元素设为BFC时,子元素的浮动高度也会参与高度计算来。

给父元素创建一个BFC

#float{

background:#ff0000;

overflow:hidden;

}

#float.float{

float:left;

}

浮动元素

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180407G022AQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券