CSS深入理解之float(HTML/CSS)

float的设计初衷仅仅是:为了文字环绕效果

 

float的包裹与破坏

包裹:收缩、坚挺、隔绝(BFC)

破坏:父元素高度塌陷

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Layout</title>
    <style>
      .box{
          border: 1px solid red;
          width: 300px;
          margin: 20px auto;
      }
      .left{
          float: left;
          height: 100px;
          width: 50px;
          border: 1px solid black;
      }
      .right{
          float: right;
          height: 100px;
          width: 50px;
          border: 1px solid green;
      }
    </style>
  </head>
  <body>
    <div class="box">
        <div class="left"></div>
        <div class="right"></div>
    </div>
  </body>
</html>
View Code

 

如何降低float破坏性的影响(清除浮动)?

1、底部插入clear:both;

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Layout</title>
    <style>
      .box {
        border: 1px solid red;
        width: 300px;
        margin: 20px auto;
      }
      .clearfix {
        clear: both;
      }
      .left {
        float: left;
        height: 100px;
        width: 50px;
        border: 1px solid black;
      }
      .right {
        float: right;
        height: 100px;
        width: 50px;
        border: 1px solid green;
      }
    </style>
  </head>
  <body>
    <div class="box">
      <div class="left"></div>
      <div class="right"></div>
      <div class="clearfix"></div>
    </div>
  </body>
</html>
View Code
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Layout</title>
    <style>
      .box {
        border: 1px solid red;
        width: 300px;
        margin: 20px auto;
      }
      .box:after {
        content: '';
        display: block;
        height: 0;
        overflow: hidden;
        clear: both;
      }
      .left {
        float: left;
        height: 100px;
        width: 50px;
        border: 1px solid black;
      }
      .right {
        float: right;
        height: 100px;
        width: 50px;
        border: 1px solid green;
      }
    </style>
  </head>
  <body>
    <div class="box">
      <div class="left"></div>
      <div class="right"></div>
    </div>
  </body>
</html>
View Code
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Layout</title>
    <style>
      .box {
        border: 1px solid red;
        width: 300px;
        margin: 20px auto;
      }
      .box:after {
        content: '';
        display: table;
        clear: both;
      }
      .left {
        float: left;
        height: 100px;
        width: 50px;
        border: 1px solid black;
      }
      .right {
        float: right;
        height: 100px;
        width: 50px;
        border: 1px solid green;
      }
    </style>
  </head>
  <body>
    <div class="box">
      <div class="left"></div>
      <div class="right"></div>
    </div>
  </body>
</html>
View Code

2、父元素BFC/haslayout

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Layout</title>
    <style>
      .box {
        border: 1px solid red;
        width: 300px;
        margin: 20px auto;
        overflow: hidden;
      }
      .left {
        float: left;
        height: 100px;
        width: 50px;
        border: 1px solid black;
      }
      .right {
        float: right;
        height: 100px;
        width: 50px;
        border: 1px solid green;
      }
    </style>
  </head>
  <body>
    <div class="box">
      <div class="left"></div>
      <div class="right"></div>
    </div>
  </body>
</html>
View Code

 

float的特性

1、元素block块状化(砖头化);

2、破坏性造成的紧密排列特性(去空格化)。

 

posted @ 2017-12-30 07:42  Z皓  阅读(319)  评论(0编辑  收藏  举报