第五次课程小结:清除浮动

什么是浮动

浮动的本质:实现文字环绕效果
元素脱离文档流不脱离文字流
脱离文档流:假如A元素浮动了,原本排在该元素之后的元素发现A元素不在这个文档流了,就会无视它往上接到A元素前面的元素之后
不脱离文字流:文字并不会无视它,还会环绕A元素



使用position:absolute,脱离文字流,直接覆盖



浮动会导致父元素的高度塌陷

BFC

块级格式化上下文,当创建BFC之后元素就会把里面的东西视为自己的东西,包括浮动元素,然后创建一个私有领域给包裹进来。
创建BFC 的几种方法:

  • float不为none
  • overflow不为visible
  • display为table-cell、table-captain、inline-block
  • position不为static、relative
    BFC的特性:
    1.让原本会叠加的上下外边距叠加无效。相邻盒子margin垂直方向会重



    2.BFC不围绕浮动元素


清除浮动的方法(解决父元素高度塌陷)

  • clear:both
  • 创建BFC
  1. 通过在浮动元素末尾添加一个空的标签例如并设置样式为clear:both | left | right ,其他标签br等亦可
<div class="parent">
    <div class="child"></div>
    <div style="clear: both;"></div>
</div>

优点:简单
缺点:增添新标签,不符合语义化

<div class="parent">
    <div class="child"></div>
    <br clear='all'>
</div>
  1. 伪元素:after
    由于IE6-7不支持:after,使用zoom:1触发hasLayout。其实是通过 content 在元素的后面生成了内容为空的块级元素
.clearfix:after {
    content:"";
    display:block;//通过 content 在元素的后面生成了内容为空的块级元素
    height:0;
    visibility:hidden;
    clear:both; 
}
.clearfix {
    zoom:1;
}

优点:结构和语义化完全正确,代码量居中。
缺点:复用方式不当会造成代码量增加。

.clearfix:after {
    content:"";
    display:table;
    clear:both; 
}
.clearfix {
    zoom:1;
}

用display:table 是为了避免外边距margin重叠导致的margin塌陷, 内部元素默认会成为 table-cell 单元格的形式
.clearfix应该用于包含浮动子元素的父元素上

float浮动

使用浮动将造成:
元素block块状化
破坏性造成的去空格化

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • relative:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位...
    zx9426阅读 973评论 0 2
  • 主要内容: 浮动的介绍、清除浮动、各种定位、BFC以及外边距合并的介绍。 浮动 什么是浮动元素 浮动元素是floa...
    苦瓜_6阅读 595评论 0 0
  • 一,浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 浮动模型是一种可视化格式模型,浮动...
    DeeJay_Y阅读 907评论 0 4
  • 一、常用css定位流描述 1、文档流定位 position: static(默认方式) 页面元素的默认定位方式 块...
    EdmundChen阅读 1,872评论 0 8
  • 11、何宝莱说:不如我们从头来过。 —— 《春光乍泄》 12、雨声潺潺,像住在溪边,宁愿天天下雨,以为你是因为下雨...
    叶眉弯阅读 935评论 2 21