1. 程式人生 > 其它 >css-清除浮動

css-清除浮動

文章目錄

一、為什麼要清除浮動?

因為父級盒子在很多情況下,無法給出固定高度(例如:手機頁面新增新品),而子盒子浮動不佔位置,最後父級盒子高度為0時,就會影響到下面的標準流盒子。

二、清除浮動的本質

  • 本質是清除浮動元素造成的影響
  • 如果父盒子本身有高度,就不需要清除浮動
  • 清除浮動之後,父級就會根據浮動的子盒子自動檢測高度(當父盒子有高度之後,就不會影響下面的標準流了)

三、清除浮動方法

語法

選擇器{clear:屬性值;}
屬性值描述
both同時清除左右兩側浮動的影響
left清除左側浮動的影響
right清除右側浮動的影響

方法一:額外標籤法(隔牆法)

在浮動元素後面加一個空標籤(必須是塊級元素)

.clear {
            clear: both;
        }
<div class="clear"></div>
<style>
        .box {
            width: 800px;
            border: 1px solid blue;
            margin: 0 auto;
        }
.damao { float: left; width: 300px; height: 200px; background-color: purple; } .ermao { float: left; width: 200px; height: 200px; background-color: pink; } .footer { height
: 200px; background-color: black; } .clear { clear: both; }
</style> </head> <body> <div class="box"> <div class="damao">大毛</div> <div class="ermao">二毛</div> <!-- <div class="clear"></div> --> <!-- 這個新增的盒子要求必須是塊級元素不能是行內元素 --> <span class="clear"></span> </div> <div class="footer"></div> </body>

方法二:父級新增overflow

將overflow的屬性值設定為hidden、autoscroll
缺點:無法顯示溢位部分

.box {
            /* 清除浮動 */
            overflow: hidden;
            width: 800px;
            border: 1px solid blue;
            margin: 0 auto;
        }
<style>
        .box {
            /* 清除浮動 */
            overflow: hidden;
            width: 800px;
            border: 1px solid blue;
            margin: 0 auto;
        }

        .damao {
            float: left;
            width: 300px;
            height: 200px;
            background-color: purple;
        }

        .ermao {
            float: left;
            width: 200px;
            height: 200px;
            background-color: pink;
        }

        .footer {
            height: 200px;
            background-color: black;
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="damao">大毛</div>
        <div class="ermao">二毛</div>
    </div>
    <div class="footer"></div>

</body>

方法三::after 偽元素法

額外標籤法升級版

優點:結構中無需新增一行,優化了結構,css樣式中新加了個盒子

固定程式碼:

    <style>
        .clearfix:after {
            content: "";
            /* 轉換成塊內元素 */
            display: block;
            height: 0;
            clear: both;
            visibility: hidden;
        }

        .clearfix {
            /* IE6、7 專有 */
            *zoom: 1;
        }

        .box {
            width: 800px;
            border: 1px solid blue;
            margin: 0 auto;
        }

        .damao {
            float: left;
            width: 300px;
            height: 200px;
            background-color: purple;
        }

        .ermao {
            float: left;
            width: 200px;
            height: 200px;
            background-color: pink;
        }

        .footer {
            height: 200px;
            background-color: black;
        }
    </style>
</head>

<body>
    <div class="box clearfix">
        <div class="damao">大毛</div>
        <div class="ermao">二毛</div>
    </div>
    <div class="footer"></div>

</body>

方法四:雙偽元素清除浮動

即在css樣式中前後都加一個盒子

<style>
        /* 前後都加上一個盒子 */
        .clearfix:before,
        .clearfix:after {
            content: "";
            /* 轉換為表格 */
            display: table;
        }

        .clearfix:after {
            clear: both;
        }

        .clearfix {
            /* 照顧低版本瀏覽器 相容性問題 */
            *zoom: 1;
        }

        .box {
            width: 800px;
            border: 1px solid blue;
            margin: 0 auto;
        }

        .damao {
            float: left;
            width: 300px;
            height: 200px;
            background-color: purple;
        }

        .ermao {
            float: left;
            width: 200px;
            height: 200px;
            background-color: pink;
        }

        .footer {
            height: 200px;
            background-color: black;
        }
    </style>
</head>

<body>
    <!-- 多類名 -->
    <div class="box clearfix">
        <div class="damao">大毛</div>
        <div class="ermao">二毛</div>
    </div>
    <div class="footer"></div>

</body>