css清除浮动

362 阅读1分钟

什么是清除浮动

当父级元素高度不定,子级元素浮动以后导致布局破坏父级无法撑开。解决这种情况的方式叫做清除浮动

  • 正常情况

*浮动以后

使用overflow属性

  <div id="outer">
    <div id="inner"></div>
  </div>

解决方法

  #outer{
    width: 200px;
    overflow: hidden;
  }
  #inner{
    width: 100px;
    height: 100px;
    float: left;
  }

当内容超出元素框时,overflow可对内容进行处理。

使用clear属性

  <div id="outer">
    <div id="inner"></div>
    <div id="clear"></div>
  </div>

解决方法

  #outer{
    width: 200px;
  }
  #inner{
    width: 100px;
    height: 100px;
    float: left;
  }
  #clear{
    clear: both;
  }

缺点:生成了多余的html元素

伪元素加clear

  <div id="outer">
    <div id="inner"></div>
  </div>

解决方法

  #outer{
    width: 200px;
    border: 1px solid red;
  }
  #inner{
    width: 100px;
    height: 100px;
    border: 1px solid #333;
    float: left;
  }
  #outer::after{
    clear: both;
    content:'';
    display: block;
  }

使用伪元素能达到上面同样效果,但没有生成html元素为更优解。

BFC

  <div id="outer">
    <div id="inner"></div>
  </div>

解决方法

  #outer{
    width: 200px;
    border: 1px solid red;
    display: flow-root;
  }
  #inner{
    width: 100px;
    height: 100px;
    border: 1px solid #333;
    float: left;
  }

css高级用法,BFC清除浮动