CSS中的浮动原理和清除浮动

浮动

浮动元素会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素。

被浮动的元素可以内联排列。

浮动元素脱离了文档流,并不占据文档流的位置,自然父元素也就不能被撑开,所以没了高度。

清除浮动

主要有两种方式:分别是clear清除浮动和BFC清除浮动

1. clear清除浮动

clear:both 不允许元素的左边或右边挨着浮动元素,底层原理是在被清除浮动的元素上边或者下边添加足够的清除空间。

2. 利用伪元素清除浮动(现代浏览器clearfix方案,最佳实践方案)

// clearfix方案,不支持IE6/7
.clearfix:after {
    display: table;
    content: " ";
    clear: both;
}

// 引入了zoom以支持IE6/7
.clearfix:after {
    display: table;
    content: " ";
    clear: both;
}
.clearfix{
    *zoom: 1;
}

// 最佳实践方案
// 加入:before以解决现代浏览器上边距折叠的问题
.clearfix:before,
.clearfix:after {
    display: table;
    content: " ";
}
.clearfix:after {
    clear: both;
}
.clearfix{
    *zoom: 1;
}

: 加入:before是为了解决现代浏览器上边距折叠的问题

3. BFC容器清除浮动

BFC(Block Formatting Context)既块状格式化上下文,它是按照块级盒子布局的。

BFC的主要特征:

  1. BFC容器是一个隔离的容器,和其他元素互不干扰;所以我们可以用触发两个元素的BFC来解决垂直边距折叠问题。
  2. BFC可以包含浮动;通常用来解决浮动父元素高度坍塌的问题。

BFC的触发方式

// 给父元素添加以下属性来触发BFC
1. float: left | right
2. overflow: hidden | auto | scorll
3. display: table-cell | table-caption | inline-block | flex | inline-flex
4. position: absolute | fixed
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从业三年,项目无数,现在回过头来,想要把一些重要的知识用白话整理出来:这个东西是什么?怎样才是最佳实践?希望对自己...
    齐修_qixiuss阅读 40,499评论 19 203
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,806评论 1 92
  • 浮动到底是什么? 浮动元素会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素。 浮动有哪些特征? 浮动...
    丑小小鸭阅读 381评论 0 0
  • 一,浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 浮动模型是一种可视化格式模型,浮动...
    DeeJay_Y阅读 901评论 0 4
  • 如果公司使用代理,Git就需要设置代理才能克隆远程仓库执行下面两条语句 如果需要用户名和密码 然后就可以使用 不能...
    Smallwolf_JS阅读 734评论 2 0