zoukankan      html  css  js  c++  java
  • CSS清除浮动八种方法

    浮动引起的问题:

    1.父元素高度坍塌。

    2.后面非浮动元素跟随其后。破坏了页面布局。

    html:

    <div class="test">前面的元素</div>
    <div class="parent">
        <div class="child1">左浮动</div>
        <div class="child2">左浮动</div>
    </div>
    <div class="test">后面的元素</div>

    因此我们需要清除浮动,清除浮动的方式有以下几种:

    1.给父级后面的元素添加css属性clear:both;这样可以解决问题2,但是父级元素是仍旧没有高度的。而以下几个方法都可以解决这个问题。

    2.在父级元素里的末尾添加一个空的div,设置clear:both;

    优点:简单。

    缺陷:页面浮动布局多,就要增加很多空div。

    3.设置父级伪类:after和zoom;(推荐方法

    IE8以上和非IE浏览器才支持:after,原理和方法2类似,zoom(IE专有属性)可解决ie6,ie7浮动问题。

    .parent{
        border: 1px solid red;
    }
    .child1, .child2{
        float: left;
        border: 1px solid blue;
    }
    .test{
        background: pink;
    }
    /* 清除浮动 */
    .parent:after{
        content: ' ';
        display: block;
        height: 0;
        clear: both;
        visibility: hidden;
    }
    .parent{
        zoom: 1; 
    }

    4.设置父级元素高度。只建议高度固定的布局时使用。如下设置了高度30px;

    5.设置父级元素overflow:hidden或auto。

    .parent{
        border: 1px solid red;
        /* 清除浮动 */
        overflow: hidden;
        /* zoom: 1; */
        width: 100%;
    }

    注意:1.必须定义width或zoom:1,同时不能定义height,使用overflow:hidden或auto时,浏览器会自动检查浮动区域的高度。

       2.不能和position配合使用,因为超出的会被隐藏。如下:

    .parent{
        border: 1px solid red;
        overflow: hidden;
        zoom: 1;
        /* 使用position */
        position: relative;
    }
    .child1, .child2{
        float: left;
        border: 1px solid blue;
        /* 使用position */
        position: absolute;            
    }

    子元素就被隐藏了:

    6.父元素也设置浮动,其后元素设置clear:both;

    .parent{
        border: 1px solid red;
        float: left;
    }
    .child1, .child2{
        float: left;
        border: 1px solid blue;
    }
    .test{
        background: pink;
        clear: both;
    }

    7.将父级元素设置为表格。

    .parent{
        border: 1px solid red;
        display: table;
        width: 100%;
    }

    8.在结尾处加<br/>标签。

    <div class="parent">
        <div class="child1">左浮动</div>
        <div class="child2">左浮动</div>
        <br class="clearFloat">
    </div>
    .parent{
        border: 1px solid red;
        zoom: 1;
    }
    .clearFloat{
        clear: both;
    }
  • 相关阅读:
    JeePlus:代码生成器
    JeePlus:API工具
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
  • 原文地址:https://www.cnblogs.com/PeriHe/p/8538315.html
Copyright © 2011-2022 走看看