html5清除浮动的作用,浮动、BFC以及清除浮动

什么是BFC

BFC全称Block Formatting Context,意思是块级格式上下文,它是一个独立的布局环境,一个BFC中的元素布局不受外界的影响。

W3C中关于BFC的定义:

浮动元素、绝对定位元素、非块级元素的块级容器(如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为visiable的元素,都会为他们的内容创建新的BFC(块级格式上下文)。

PS:与之类似的还有一个叫层叠上下文stacking context的东西。

形成一个BFC的条件浮动元素(float为left或者right);

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

非块级元素的块级容器(display 的值为inline-block、table-cell、table-caption、flex,inline-flex)

overflow 的值不为 visible;

创建BFC最常见的做法是使用overflow:hidden,因为它几乎不会造成任何负面影响。

BFC的特点同一个BFC内部相邻两个垂直方向的块级元素会发生margin合并(即上面元素的margin-bottom和下边元素的margin-top会合并,当二者不一致时将以最大的那个外边距为准);

BFC不会与浮动元素重叠(overflow:hidden可以实现左侧固定右侧100%效果利用的就是这个特性);

BFC可以包含浮动(给父容器设置overflow:hidden可以清除浮动利用的就是这个特性);

在BFC中,每个盒子的margin-left紧挨着包含块的border-left(从右到左的格式,则为紧挨右边框)。

BFC的用途

使用BFC来防止外边距折叠

上面我们知道,同一个BFC内部相邻两个垂直方向的块级元素会发生margin合并,如果他们属于不同的BFC,他们之间的外边距将不会折叠。所以通过创建一个新的BFC我们可以防止外边距折叠。

使用BFC清除浮动

清除浮动通常使用clear:both来实现,但也可以通过创建一个BFC来清除浮动(通常的做法是给浮动父元素设置overflow:hidden)。

使用BFC实现左侧固定右侧100%的布局

.clear-float:after {content: ''; display: block; clear: both;}

.aside {float: left; width: 300px; background: #F6D3FF; height: 200px; margin-right: 10px;}

.content { overflow: hidden; zoom: 1; background: #FFD5B1; height: 200px;}

左侧浮动,宽度固定300px

右侧overflow:hidden

使用BFC来防止文字环绕

这个其实和上面是一样的道理。浮动元素会形成文字环绕,这本来是好事,但是偏偏有时候可能不想让文字环绕,此时可以通过给文字元素创建BFC来阻止。

默认情况:

.container { width: 230px; height: 200px; border: solid 2px #00F;}

.float { width: 100px;height: 100px;background: #ccc;float: left;margin: 5px;}

我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字。

617f30cf07b839c0118f4d5814bb7989.gif

清除文字环绕:

.container { width: 230px; height: 200px; border: solid 2px #00F;}

.float { width: 100px;height: 100px;background: #ccc;float: left;margin: 5px;}

p{overflow:hidden;}

我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字,我是环绕文字。

617f30cf07b839c0118f4d5814bb7989.gif

浮动

默认情况下,浮动会造成父元素的高度塌陷,所以我们要清除浮动。

清除浮动的几种方法

清除浮动一般有两种思路

利用 clear属性,清除浮动

使父容器形成BFC

具体一点有如下几种方式:

在最后面追加空白元素(如
)添加clear:both添加clear:both;

使用伪元素.clearfix{content:'';display:block;clear:both;};

父元素也跟着浮动,但是这样又会造成父元素的父元素高度塌陷,所以不推荐;

创建BFC,如给父元素设置overflow:hidden;

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 清除浮动作用是解决父元素因子元素浮动而导致的高度塌陷问题。当所有的子元素浮动时,父元素没有设置高度,就会出现高度塌陷的情况。清除浮动可以使父元素正确地包裹子元素,使得布局更加准确。\[1\]清除浮动的方法有多种,可以使用带clear属性的空元素,在浮动元素后使用一个空元素,并在CSS中赋予.clear{clear:both;}属性即可清理浮动。也可以使用AFTER伪元素,通过父元素的::after伪元素来生成浮动元素的兄弟元素,然后兄弟元素使用clear:both方法。另外,通过BFC浮动的元素的容器添加浮动,给浮动元素的容器也添加上浮动属性即可清除内部浮动。但是需要注意,这样会使整体浮动,可能会影响布局,不推荐使用。\[2\]清除浮动的本质是为了解决浮动元素不占位置,影响后面元素排版的问题。\[3\] #### 引用[.reference_title] - *1* *3* [css知识点——清除浮动](https://blog.csdn.net/weixin_43894901/article/details/116291924)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [前端基础:CSS清除浮动的原因、本质和方法](https://blog.csdn.net/weixin_49555741/article/details/123412490)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值