1. 程式人生 > >三欄佈局之聖盃佈局

三欄佈局之聖盃佈局

聖盃佈局是左、中、右三欄被囊括在container中。 固定左右兩欄的寬度,讓main欄,即中間欄自適應大小。基礎程式碼如下:

<div class="container">
        <div class="main"></div>
        <div class="left"></div>
        <div class="right"></div>
</div>

先看一個container的內邊距和content的關係:設定container的左右內邊距為三欄佈局中左右兩欄的寬度。main設定為content的寬度,實現自適應。

1.設定left和right的寬度,分別為200px和300px;

.left{
            width: 200px;
            background-color: red;
        }
        .right{
            width: 300px;
            background-color: blue;
        }

2.設定container的padding,padding-left和padding-right的寬度分別是left和right的寬度,即200px,300px。在此設定頂部和底部為0.container的坐內邊距、右內邊距的寬度用於存放left、right。

.container{
            padding: 0 200px 0 300px;
        }

 3.給container裡面的left,right,和main設定一個統一的高度,為150px;

.main,.left,.right{
            min-height: 150px;
        }

4.main的寬度佔據了container的content的全部寬度,所以,width:100%;

.main{
            background-color: yellow;
            width: 100%;
        }

5.讓container裡的三欄都相對定位且浮動

.container>div{
            position: relative;
            float: left;
        }

現在的情況是這樣:

我要實現的樣式是像下面這個這樣:那麼應該怎麼做呢?

1.設定left的margin-left:-100%;將left設定到main的左邊;

2.將right移動到main的右邊:margin-left:-300px;

3.最後一步,將left和right移動到padding的left和right部分;left:-200px;right:-300px;

全部程式碼如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Page Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
        .left{
            width: 200px;
            background-color: blue;
            margin-left: -100%;
            left:-200px;
        }
        .right{
            width: 300px;
            background-color: red;
            margin-left: -300px;
            right:-300px;
        }
        .main{
            background-color: yellow;
            width: 100%;
        }
        .main,.left,.right{
            min-height: 150px;
        }
        .container{
            padding: 0 300px 0 200px;
            /* overflow:hidden; */
        }
        .container>div{
            position: relative;
            float: left;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="main">main</div>
        <div class="left">left</div>
        <div class="right">right</div>
    </div>
</body>
</html>