CSS清除浮动的方法

BFC

CSS中的BFC

BFC:block formatting context块级格式化上下文;

BFC 与清除浮动的关系

某些属性值只要出发了BFC,就可以清除浮动

触发BFC的属性

float,除取值为none的情况;

overflow,除取值为visible的情况;

display中的table-cell,table-caption,inline-block属性;

position中的fixed,absolute;

清除浮动的方法

1.在代码片段的最后添加一个空div标签,并给它设置clear:both;样式,解决父级元素的高度塌陷(浮动元素不在文档流中了)问题;

<div class="content">

<div style="float: left;width: 100%;height: 100px;background-color: #ff0;"></div>

<div class="float: right;width: 100%;height: 100px;background-color: #0f0;"></div>

<div class="clear: both"></div>

</div>

缺点:

可维护性差,在页面中创建冗余的元素;

2.给最外层的父元素设置:overflow: hidden;让浮动元素回到容器中

.content {overflow: hidden;}

3.让最外层的父元素也浮动,来清除内部浮动

.content {float: left;}

缺点: 

影响页面布局,不推荐;

4.使用CSS伪元素:after,给浮动元素的外层容器添加新的class,在元素的末尾添加一个看不见的块元素,但有占位

.clearfix:after{

content:"."; /* 添加内容 */

display:block;/* 生成的元素以块级元素显示,占满空间 */

height: 0;/* 避免生成的内容破坏原有的布局高度*/

clear:both;/* 清除浮动 */

visibility: hidden;/* 让元素不可见 */

}

.clearfix{zoom:1;/*兼容IE6,7用于触发IE的hasLayout,然后才能清除浮动*/}

5.改进方案

.clearfix:before,.clearfix:after{

content:'';

display:table; /* 匿名的表格单元 */

}

.clearfix:after{clear:both;}

注意:

该方法中加上:before可以防止浏览器顶部的空白崩溃,即是 margin-top与上一个盒子的margin-bottom发生叠加;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,693评论 1 92
  • 这篇文章极好,以至于让我受益良多,就一字没有改动的转发过来一丝冰凉老师的文章 需要注意的是,display:tab...
    新晋小牛牛阅读 4,700评论 0 2
  • 前言 摘要: 浮动的元素可以向左或向右移动,直到它的外边缘碰到父容器或另一个浮动元素为止。由于浮动元素不在文档的普...
    zouyang0921阅读 3,118评论 0 2
  • 首先来看个栗子:css代码: <!DOCTYPE html> .main {width:300px;he...
    灵籁阅读 1,684评论 0 0
  • 安装 Debain系统使用sudo apt install git命令安装 安装完成后使用下列命令设置用户名及邮箱...
    tsunderebabys阅读 1,486评论 0 0

友情链接更多精彩内容