zoukankan      html  css  js  c++  java
  • 清除浮动的方法以及为什么清除浮动

    1.为什么清除浮动

       浮动的元素是脱离文档流的元素,其会对父元素以及兄弟元素的布局等产生一定影响

       因此为了避免出现各种样式问题,在使用浮动以后需要进行清除浮动的操作

       下面是没有清除浮动的示例:

       HTML代码:

    <ul>
        <li>红色</li>
        <li>绿色</li>
        <li>黄色</li>
    </ul>
    <div class="next">这是一个测试div</div>

       CSS代码:

    ul{
      list-style: none;
      border: 1px solid red;
    }
    li{
      width: 100px;
      height: 100px;
      float: left;
    }
    li:nth-child(1){
      background-color: red;
    }
    li:nth-child(2){
      background-color: green;
    }
    li:nth-child(3){
      background-color: yellow;
    }
    .next{
      width:200px;
      height: 200px;
      border: 1px solid black;
    }

        效果图:

         

        如上图所示:正常情况下ul作为父元素,在没有设置高度时会被里面的内容撑开,显示出边框或者背景,

        但是由于里面的元素使用了浮动从而脱离了正常文档流,所以边框背景等属性在父元素上不起作用(margin和padding等是可以作用的)

        兄弟元素div.next也没有在正常位置,正常应该再li的下方,但是现在却有一部分被浮动的挡住了。

        为了使父元素和兄弟元素都能够正常显示,下面使用一些方法来清除浮动。

    2.清除浮动的一些方法:

       方法一:

       在父元素上添加属性overflow:hidden,此时父元素和兄弟元素都可以正常显示;

       在兄弟元素上添加属性clear:both,此时可以使兄弟元素正常显示在li的下方位置。

       方法二:

        在使用浮动的元素下面增加一个空元素,

         HTML代码:

    <ul>
        <li>红色</li>
        <li>绿色</li>
        <li>黄色</li>
        <li></li>
    </ul>

        CSS代码:

    ul{
        list-style: none;
        margin: 50px;
        border: 1px solid red;
    }
    li{
        width: 100px;
        height: 100px;
    }
    li:nth-child(1){
        background-color: red;
        float: left;
    }
    li:nth-child(2){
        background-color: green;
        float: left;
    }
    li:nth-child(3){
        background-color: yellow;
        float: left;
    }
    li:nth-child(4){
        width: 0;
        height: 0;
        clear: both;
    }

       (注意不要把最后一个空元素li设置浮动,否则clear:both不起作用)

        该方法也会同时清除父元素和兄弟元素的浮动。

         方法三:

         在父元素上使用:after

          HTML代码:

    <ul>
        <li>红色</li>
        <li>绿色</li>
        <li>黄色</li>
    </ul>

      CSS代码:

    ul{
        list-style: none;
        margin: 50px;
        border: 1px solid red;
        zoom:1;
    }
    ul:after{
        content: '';
        display: block;
        width: 0;
        height: 0;
        clear: both;
    }
    li{
        width: 100px;
        height: 100px;
        float: left;
    }
    li:nth-child(1){
        background-color: red;
    }
    li:nth-child(2){
        background-color: green;
    }
    li:nth-child(3){
        background-color: yellow;
    }

    该方法会同时清除父元素和兄弟元素的浮动。

    以上三种方法都可以清除浮动,下面是效果图:
     

      以上是最常见的清浮动的方法,另外在手机端要尽量少使用浮动,亲身经验OTZ

      by新手小白的记录

  • 相关阅读:
    BZOJ5212 ZJOI2018历史(LCT)
    BZOJ5127 数据校验
    253. Meeting Rooms II
    311. Sparse Matrix Multiplication
    254. Factor Combinations
    250. Count Univalue Subtrees
    259. 3Sum Smaller
    156. Binary Tree Upside Down
    360. Sort Transformed Array
    348. Design Tic-Tac-Toe
  • 原文地址:https://www.cnblogs.com/lynnmn/p/6250423.html
Copyright © 2011-2022 走看看