css田字格布局


<!DOCTYPE html>
<html>
<head>
    <title></title>


<style type="text/css">
    #red{
        width: 200px;
        height: 200px;
        background: red;
        float:left;
    }

    #blue{
        width: 200px;
        height: 200px;
        background: blue;
        float:left;
    }

    #green{
        width: 200px;
        height: 200px;
        background: green;
        float:left;
        clear:left;
    }

    #grey{
        width: 200px;
        height: 200px;
        background: grey;
        float:left;
    }



</style>
</head>
<body>



<div id="red"></div>
<div id="blue"></div>
<div id="green"></div>
<div id="grey"></div>
</body>
</html>

 

上面就是完整的代碼。那說下怎么實現的。

 

首先有幾點需要明確:

1.沒有float屬性的div不管它是多么小還是多么寬它都是獨自占用一個行。

2.float:left是什么意思?怎么理解,我是這么理解的,只要一個div加了float:left屬性之后它就變得不再是一個獨占一行的元素了。我們可以把瀏覽器的div分為兩層,這就和兩個平行的平面一樣,所有沒有float的屬性的div都是下面那個平面的,並且因為它們各自獨占一行所以它們相互緊靠着,當最上面的一個div變成float之后下面的div就要擠上來。而有float屬性的div都是上面那個平面的,有了float屬性的div由於不再獨占一行了,所以同一行可以存在多個div,這些個div都在上面那個平面。

3.clear:left,如果某個div加上了這么個屬性,意思就是說我這個div上面不允許有float:left屬性的div。

 

了解了上面那幾點之后再說下田字格布局的思路。

 

你最開始寫的代碼肯定是這樣的:

<!DOCTYPE html>
<html>
<head>
    <title></title>


<style type="text/css">
    #red{
        width: 200px;
        height: 200px;
        background: red;
    }
    #blue{
        width: 200px;
        height: 200px;
        background: blue;

    }
    #green{
        width: 200px;
        height: 200px;
        background: green;

    }
    #grey{
        width: 200px;
        height: 200px;
        background: grey;
    }



</style>
</head>
<body>
<div id="red"></div>
<div id="blue"></div>
<div id="green"></div>
<div id="grey"></div>
</body>
</html>

效果是這樣的:

思考為什么四個方塊是由上到下排列的,而不是藍色在紅色的右邊,綠色在藍色的右邊,灰色在綠色的右邊,上面說過了,因為它們是沒有float屬性的div,要獨占一行。

 

接下來想讓藍色的快在紅色的右邊,那么需要給紅色加上float:left屬性,藍色的塊也加上float:left屬性,代碼是這樣的:

 

<!DOCTYPE html>
<html>
<head>
    <title></title>


<style type="text/css">
    #red{
        width: 200px;
        height: 200px;
        background: red;
        float:left;
    }
    #blue{
        width: 200px;
        height: 200px;
        background: blue;
        float:left;
    }
    #green{
        width: 200px;
        height: 200px;
        background: green;

    }
    #grey{
        width: 200px;
        height: 200px;
        background: grey;
    }



</style>
</head>
<body>
<div id="red"></div>
<div id="blue"></div>
<div id="green"></div>
<div id="grey"></div>
</body>
</html>

效果如下圖所示:

你可能會問為什么藍色的塊在紅色的塊的右邊?因為紅色的塊有float:left屬性,它飄到了上個平面,而且不再獨占一行元素,而藍色的塊也有float:left屬性,所以紅色的塊和藍色的塊都跑到了上面那個平面而且靠在了一起。你可能會問那綠色的那個塊哪里去了呢?

因為紅色的塊和藍色的塊都跑到了上面那個平面去了,那么原來在下面那個平面的綠塊就會頂到顯示器的上邊緣,而上面的平面會把下面的平面給蓋住,所以綠色的塊在紅色塊的下面。

 

那怎么讓綠色的塊不被覆蓋掉呢? 這時候clear:left的作用就體現出來了,我們給綠色的塊加一個clear:left屬性,代碼是這樣的:

<!DOCTYPE html>
<html>
<head>
    <title></title>


<style type="text/css">
    #red{
        width: 200px;
        height: 200px;
        background: red;
        float:left;
    }
    #blue{
        width: 200px;
        height: 200px;
        background: blue;
        float:left;
    }
    #green{
        width: 200px;
        height: 200px;
        background: green;
        clear:left;
    }
    #grey{
        width: 200px;
        height: 200px;
        background: grey;
    }



</style>
</head>
<body>
<div id="red"></div>
<div id="blue"></div>
<div id="green"></div>
<div id="grey"></div>
</body>
</html>

 

效果是這樣的:

為什么綠色的塊加了clear:left不是跑到藍色塊的右邊呢?因為綠色塊目前是一個沒有float:left屬性的塊,它會獨占一個元素,而如果放到了藍色塊的右邊,顯然於“我的上面不允許有float:left屬性的塊”相矛盾,別忘了,沒有float:left屬性的塊不管它有幾個像素,它都獨占一個行。

 

那怎么讓灰色的塊跑到綠色塊的右邊呢?很簡單,只要把綠色的塊再加上float:left屬性,同時灰色塊也加上float:left屬性即可,最后代碼就是最開始的那個代碼。效果如下:

 


免責聲明!

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



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