CSS - 浮动

CSS - 浮动

  • 1. 浮动
    • 1.1 为什么需要浮动
    • 1.2 什么是浮动
    • 1.3 浮动的特性
  • 2. 清除浮动
    • 2.1 为什么要清除浮动
    • 2.2 清除浮动的方法
      • 2.2.1 额外标签法
      • 2.2.2 给父亲添加 overflow
      • 2.2.3 :after 伪元素发法
      • 2.2.4 双伪元素清除浮动

1. 浮动

1.1 为什么需要浮动

  • 浮动可以改动元素原有排列方式。最典型的应用:可以让多个块级元素一行内排列显示。

网页布局第一准则: 多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动。

1.2 什么是浮动

float 属性用于创建浮动框,将其移动到一边,直到左边缘或者右边缘触及包含块的边缘(父元素的边缘)或者另一个浮动框的边缘。
CSS - 浮动_第1张图片

1.3 浮动的特性

  1. 浮动元素会脱离标志流(脱标)—— 浮动的元素不再保留原来的位置,所以后面的盒子会顶上来,注意只影响后面的元素,不会影响前面的元素。 如下图所示,橙色的盒子浮动了,其位置不再保留,未浮动的蓝色盒子顶了上来
    CSS - 浮动_第2张图片

  2. 浮动的元素会一行内显示并且元素顶部对齐。如下图所示,三个浮动的盒子(可能高度不同)始终保持上边沿对齐。
    CSS - 浮动_第3张图片

  3. 浮动的元素会具有行内块元素的特性。任何元素都可以添加浮动,不管元素原来是行内元素还是块元素,当加了浮动了之后,就具有行内块元素的特性:

    1. 如果行内元素加了浮动,则不需要转换为块级 / 行内块元素就可以直接给高度和宽度;
    2. 如果块元素本来的宽带默认和父亲一样宽,但是加了浮动之后宽度右元素内的内容决定。

2. 清除浮动

2.1 为什么要清除浮动

  • 现象:父盒子未给高度(在一些时机应用中需要让孩子撑开父盒子的高度,所以父盒子不主动添加高度),但是子盒子又是浮动的,导致父盒子的高度为0,影响了与父盒子同级的后面的标准流的布局。
  • 结论:为了清除浮动盒子对后面标准流布局的影响,需要清除浮动

2.2 清除浮动的方法

  • 清除浮动的本质:清除浮动元素脱离标准流造成的影响。
  • 清除浮动的策略:闭合浮动,只让浮动在父盒子内部作用,不影响父盒子外面的其它盒子。

2.2.1 额外标签法

  • 使用:在最后一个浮动的子元素的后面添加一个空标签,例如:
  • 优点:通俗易懂,书写方便
  • 缺点:添加许多无意义的标签,改变了结构
  • 注意:这个新增的空标签必须是块级元素。

2.2.2 给父亲添加 overflow

  • 使用:给父级元素添加 overflow 属性,将其属性值设置为 hidder、auto、scroll其中之一
  • 优点:代码简洁
  • 缺点:无法显示溢出部分,如下图所示,小方块右边超出大方块的部分被截断。
  • 注意:overflow 属性是添加在父元素上的。

CSS - 浮动_第4张图片

2.2.3 :after 伪元素发法

  • 使用:给父元素添加 clearfix 类属性
    .clearfix:after {
            content: "";
            display: block;
            height: 0;
            clear: both;
            visibility: hidden;
        }
    
    .clearfix {
        /* IE6、7 专有 */
        *zoom: 1;
    }
    
  • 优点:没有增加标签,结构更简单
  • 缺点:需要额外照顾低版本浏览器
  • 注意:给父元素添加的类属性

2.2.4 双伪元素清除浮动

  • 使用:给父元素添加 clearfix 类属性
    .clearfix:before,
    .clearfix:after {
        content: "";
        display: table;
    }
    
    .clearfix:after {
        clear: both;
    }
    
    .clearfix {
        *zoom: 1;
    }
    
  • 优点:代码更简洁
  • 缺点:需要额外照顾低版本浏览器
  • 注意:给父元素添加 clearfix 类属性

你可能感兴趣的:(前端,CSS,前端,css,浮动)