博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BFC原理
阅读量:6366 次
发布时间:2019-06-23

本文共 962 字,大约阅读时间需要 3 分钟。

一、BFC定义

1、 box

box是css布局的基本单位,元素的类型和display属性决定了box的类型。不同的类型的盒子会参与不同的formatting context。

block-level box :display属性为block、list-item(作为列表显示的元素)、table的元素会生成block-level box。

2、formatting context

它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用

  • BFC(block formatting context)为块级格式化上下文,他是一个独立渲染区域,并且只有block-level box参与,规定了block-level box内部的布局方式。

二、布局规则

1、内部的box会在垂直方向上一个接一个的放置

复制代码

2、同一个bfc内,两个相邻box元素的margin会产生重叠,重叠距离为数值大的margin值
给div1设置
margin: 20px 0,给div2设置
margin: 30px 0,此时div1和div2之间的间距为30px。

  • 解决方式 让两个元素不属于同一个BFC
    3、BFC区域不会与浮动元素重叠
复制代码

此时main元素没有产生bfc,left元素浮动,效果如下:

给main元素设置
overflow:hidden变为bfc,效果如下:

4、计算BFC的高度时,浮动元素也参与计算
5、每个元素的margin box的左边, 与
包含块 border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此

6、BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素

3、产生BFC的方式

1、overflow属性不是visible

2、float属性不为none
3、display属性为inline-block、table-cell、flex、inline-flex、table-caption
4、position为absolute、fixed
5、body根元素

转载于:https://juejin.im/post/5c17565b6fb9a049ef267d9a

你可能感兴趣的文章
线程池的设计(二):领导者追随者线程池的设计
查看>>
获取设备列表
查看>>
Django使用网上模板做个能展示的博客
查看>>
基于同IP不同端口,同端口不同Ip的虚拟主机 基于FQDN的虚拟主机
查看>>
项目软件集成三方模块,编译中int32和uint32定义冲突解决方法
查看>>
StretchDIBits速度测试(HALFTONE)
查看>>
在.NET Workflo“.NET研究”w 3.5中使用多线程提高工作流性能
查看>>
验证Oracle处理速度
查看>>
自己写一个jquery
查看>>
BGP聚合attribute-map
查看>>
艾伟:C#中抽象类和接口的区别
查看>>
Flink - NetworkEnvironment
查看>>
BZOJ4374 : Little Elephant and Boxes
查看>>
【.Net Framework 体积大?】不安装.net framework 也能运行!?开篇叙述-1
查看>>
LLDP协议、STP协议 笔记
查看>>
tomcat中的Manager App帐号password管理
查看>>
如何使用 GroupBy 计数-Count()
查看>>
有了这个课件制作工具,还怕备课有难题?
查看>>
jquery之clone()方法详解
查看>>
Delphi 用文件流读取文本文件字符串的方法
查看>>