关于CSS里的块级格式

1.BFC 定义

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

通俗地来说:创建了 BFC的元素就是一个独立的盒子,里面的子元素不会在布局上
影响外面的元素(里面怎么布局都不会影响外部),BFC任然属于文档中的普通流

2.BFC的生成:

知道了BFC怎么触发BFC
满足以下条件之一都可以触发BFC,变身为BFC

根元素

立即学习“前端免费学习笔记(深入)”;

float属性不为none

position不为static和relative

overflow不为visible

display为inline-block, table-cell, table-caption, flex, inline-flex

你会发现BFC无处不在,只是自己用的时候不知道而已

3.BFC布局规则:

变身为BFC后有什么特性呢,以下:

内部的Box会在垂直方向,一个接一个地放置。

Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠

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

BFC的区域不会与float box重叠。

BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。

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

4.BFC作用:

用起来come boby

1.防止外边距重叠

bfc导致的属于同一个bfc中的子元素的margin重叠(Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠)

问题:由图可以看到,String1和String2 之间只有20px的margin,按理来说应该是40px,但这是在bfc中导致了他们的margin重叠

代码:

.container1{        /* 通过overflow:hidden可以创建bfc */        overflow: hidden;        background-color: red;        width: 300px;    }    .sub1{        margin: 20px 0px;        background-color: #dea;    }
String1
String2

解决方法:我们可以在div外面包裹一层容器,并触发该容器生成一个BFC。那么两个div便不属于同一个BFC,就不会发生margin重叠了。

代码:

    .newbfc{            overflow: hidden;    }
String1
String2

2.清除浮动:

问题:当元素的子元素都浮动后,会出现高度坍塌的现象,即父容器的高度不会被撑开

代码:

    .pre2{        width: 200px;        border: 2px solid red;    }    .float1,.float2{        width: 100px;        height: 100px;        float: left;    }    .float1{        background-color: #dee;    }    .float2{        background-color: #dcc;    }

解决方法:

bfc的规则:计算BFC的高度时,浮动元素也参与计算所以只要将父容器设置为bfc就可以把子元素包含进去:
这个容器将包含浮动的子元素,它的高度将扩展到可以包含它的子元素,在这个BFC,这些元素将会回到页面的常规文档流。

.pre2{        width: 200px;        border: 2px solid red;        /* 设置overflow*/        overflow:hidden;    }

3.解决布局:防止文字环绕

代码:

.container2{        overflow: hidden;        width: 200px;    }    .box{        float: left;        width: 100px;        height: 30px;        background-color: #daa;    }

sdfadsfdff fffffffds fsfffff sfd fsdsdfsdf fffffff

这个p元素并没有移动,但是它却出现在浮动元素的下方。p元素的line boxes(指的是文本行)进行了移位。此处line boxes的水平收缩为浮动元素提供了空间。

bfc的规则:每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。

解决这个问题只要将p元素添加overflow:hidden使其成为一个新的bfc就可以了

相信看了这些案例你已经掌握了方法,更多精彩请关注创想鸟其它相关文章!

相关阅读:

HTML中划分框窗有哪些常用属性

在HTML中有哪些引用CSS的方式

iframe的去边框和无边框有哪些操作方式

以上就是关于CSS里的块级格式的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1545836.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
CSS的伪类选择器
上一篇 2025年12月21日 17:31:28
详解浏览器渲染流程
下一篇 2025年12月21日 17:31:55

相关推荐

发表回复

登录后才能评论
关注微信