關於CSS中的clear:both的理解和錯誤的用法


傳智播客在2016年的web教學視頻中,講到了clear:both清除浮動的用法

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            #div1{
                width: 500px;
                height: 300px;
                border: 1px solid red;
                float: left;
                
            }
            #div2{
                width: 500px;
                height: 300px;
                border: 1px solid black;
            }
            #div3{
                width: 500px;
                height: 300px;
                border: 1px solid pink;
            }
            #div0{
                
                clear: both;
            }
        </style>
    </head>
    <body>
        
        <div id="div1"></div>
        
        <div id="div2"></div>
        <!--<div id="div0"></div>-->
        <div id="div3"></div>
    </body>
</html>

他的本意是DIV2和DIV3不受DIV1浮動的影響,但是他將float屬性加在了DIV1上面導致該屬性不能生效,這是因為:

在 css 文檔里面規定 clear:both 的意思是:要求框的頂邊框邊低於在源文檔中之前生成的任何浮動框的底外邊距邊。

所以有 clear:both 屬性的元素放在浮動元素之后才能起到清除浮動的作用。

對於 clear 屬性一定要牢記的是:

clear只能清除該元素之前的浮動。 
"clear on an element only clears the floats before it in document order. It doesn't clear floats after it."

清除浮動的方式有不少,不過最常見,也是最優化的一種就是就是使用偽元素:

  Parent :after{
        clear:both;
        display:block;
        content:"";
    }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM