• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • float

    float CSS属性指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它。该元素从网页的正常流动(文档流)中移除,尽管仍然保持部分的流动性(与绝对定位相反)。

    示例

    /* Keyword values */
    float: left;
    float: right;
    float: none;
    float: inline-start;
    float: inline-end;
    
    /* Global values */
    float: inherit;
    float: initial;
    float: unset;
    

    浏览器支持

    IE浏览器火狐浏览器opera浏览器chrome浏览器safari浏览器
    浏览器都支持float

    语法

    float:none| left| right| inline-start| inline-end

    取值

    • none:表明元素不进行浮动的关键字。
    • left:表明元素必须浮动在其所在的块容器左侧的关键字。
    • right:表明元素必须浮动在其所在的块容器右侧的关键字。
    • inline-start:关键字,表明元素必须浮动在其所在块容器的开始一侧,在ltr脚本中是左侧,在rtl脚本中是右侧。
    • inline-end:关键字,表明元素必须浮动在其所在块容器的结束一侧,在ltr脚本中是右侧,在rtl脚本中是左侧。

    由于float意味着使用块布局,它在某些情况下修改display值的计算值:

    display指定值计算值
    inlineblock
    inline-blockblock
    inline-tabletable
    table-rowblock
    table-row-groupblock
    table-columnblock
    table-column-groupblock
    table-cellblock
    table-captionblock
    table-header-groupblock
    table-footer-groupblock
    flexflex,但是float对这样的元素不起作用
    inline-flexinline-flex,但是float对这样的元素不起作用

    浮动元素是如何定位的

    当一个元素浮动之后,它会被移出正常的文档流,然后向左或者向右平移,一直平移直到碰到了所处的容器的边框,或者碰到另外一个浮动的元素。

    在下面的图片中,有三个红色的正方形。其中有两个向左浮动,一个向右浮动。要注意到第二个向左浮动的正方形被放在第一个向左浮动的正方形的右边。如果还有更多的正方形这样浮动,它们会继续向右堆放,直到填满容器一整行,之后换行至下一行。

    section {
      border: 1px solid blue;
    }
    
    div {
      margin: 5px;
      width: 50px;
      height: 50px;
    }
    
    .left {
      float: left;
      background: pink;
    }
    
    .right {
      float: right;
      background: cyan;
    }
    
    <section>
      <div class="left">1</div>
      <div class="left">2</div>
      <div class="right">3</div>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
         Morbi tristique sapien ac erat tincidunt, sit amet dignissim
         lectus vulputate. Donec id iaculis velit. Aliquam vel
         malesuada erat. Praesent non magna ac massa aliquet tincidunt
         vel in massa. Phasellus feugiat est vel leo finibus congue.</p>
    </section>
    

    清除浮动

    最简单的清除浮动方式就是给我们想要确保左对齐的新标题元素添加clear属性:

    h2.secondHeading {clear: both;}
    

    然而这个方法只是在同一块级格式化上下文(block formatting context)中没有其他元素的时候才是有效的。如果我们的 H2 有兄弟元素是向左浮动和向右浮动的边栏,那么使用clear 会导致这个标题元素出现在边栏的下方,这显然不是我们期望的结果。

    如果不能使用清除浮动,另一种做法是浮动容器的限制块级格式化上下文。再次列举上面的例子,有三个红色的正方形和一个P元素。我们可以设置P元素的overflow属性值变成hidden或者auto,因为这样可以让容器元素伸展到能够包含红色正方形,而不是让他们超出块元素的底部。

    上篇:display

    下篇:clear