首頁  >  文章  >  後端開發  >  手把手教學經典聖杯三列佈局

手把手教學經典聖杯三列佈局

天蓬老师
天蓬老师原創
2018-08-18 13:55:152236瀏覽

相對於"雙飛冀佈局",聖杯佈局的DOM結構更簡單,更優雅,最終效果圖:
手把手教學經典聖杯三列佈局


下面是聖杯佈局的核心程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>圣杯</title>
    <style>
 .header, .footer {
            width: 100%;
 height: 60px;
 background-color: #aaa;
 }
        .content {
            width: 1000px;
 min-height: 100%;
 margin: auto;
 text-align: center;
 line-height: 60px;
 background-color: #eee;
 }

        .container {
            width: 600px;
 margin: auto;
 overflow: hidden;
 padding: 0 200px;
 background-color: yellow;
 }

        .main {
            width: 100%;
 min-height: 650px;
 background-color: #66CCFF;
 float:left;
 }

        .left {
            width: 200px;
 min-height: 650px;
 background-color: #FD6FCF;
 float:left;
 margin-left: -100%;
 position: relative;
 left: -200px;
 }

        .right {
            width: 200px;
 min-height: 650px;
 background-color: #FC0107;
 float:left;
 margin-left: -200px;
 position: relative;
 right: -200px;
 }
    </style>
</head>
<body>
<div class="header">
    <div class="content">header</div>
</div>

<div class="container">
    <div class="main">主要内容区</div>
    <div class="left">左边</div>
    <div class="right">右边</div>
</div>

<div class="footer">
    <div class="content">footer</div>
</div>
</body>

下面我將程式碼中的內容逐條解釋給大家:

第一步: 創建DOM結構:
基本原則是:
1.頭中底三部分,其中中部區域是頁面主體,用三列佈局完成;
2.中間三列中,中間為顯示主體,必須放在前面,優先渲染,提升用戶體驗;

<!--1.头部:-->
<div class="header">
   <div class="content">header</div>
</div>
<!--2.中间主体:-->
<div class="container">
   <div class="main">主要内容区</div>
   <div class="left">左边</div>
   <div class="right">右边</div>
</div>
<!--3.底部:-->
<div class="footer">
   <div class="content">footer</div>
</div>

第二步: 將頁面頭部和尾部公共樣式寫出來[寫在當前文檔

 .header, .footer {
           width: 100%;
           height: 60px;
           background-color: #aaa;
       }
       .content {
           width: 1000px;
           min-height: 100%;
           margin: auto;
           text-align: center;
           line-height: 60px;
           background-color: #eee;
       }


詳解:
1.先設定頭部與底部的共同樣式:
   (1)width:100%; 寬度與頁等寬為: 100%,將會自動延展;
   (2)height:60px; 高度暫設為60像素,不夠還可以再調整;
   (3)background-color: #aaa; 設定背景參考色,可以根據需要決定是否保留;
2 .設定頭部與底部內容區的樣式:
   (1)width:1000px; 將公共內容區變化較小,設定為固定寬度,方便內容填充;
   (2)min-height:100% ; 設定最小高度以確保頁面佈局完整,自動使用父級度高60px;
   (3)margin: auto; 公共內容區content也是一個區塊,將它在父級容器中居中,要使用margin;
   (4)text-align:center; 內部文字水平居中;
   (5)line-height: 60%; 內部單行文字垂直居中;
   (6)background-color:#eee; 設定背景參考色,根據情況決定是否保留;

第三步: 設定中間主體容器的樣式:

.container {
           width: 600px;
           margin: auto;
           overflow: hidden;
           padding: 0 200px;
           background-color: yellow;
       }


詳解:
1.width: 600px;
設定三列佈局的父容器總寬度600px,為什麼是600像素,因為我的頁總寬度為1000px,左右二側寬度為200px,
所以中間部分為600px,這裡將容器總寬度設定為600px有二個作用:1,是給中間區塊繼承用,二是可以透過padding來擴展,
所以不必擔心600px,包不住三列內容;
2.margin: auto; 將父容器在當前視窗中居中顯示;
3.overflow: hidden; 因為後面的三列內容我要用到浮動,為了讓父容器包住子塊,不會出現高度塌陷,這裡要設定溢出隱藏;
4.padding: 0 200px;
該語句有二個作用:
   (1)設定內邊距padding,可以讓目前容器左右二邊的寬度各擴大200px,即400px,此時容器總寬度為1000px;
   (2)容器寬度擴展後的空間,實際上就是給後面的左右二列側邊欄預留的空間,否則左右二欄顯示不出來;
5.background-color: yellow; 設定背景參考色,用來查看目前三列佈局情況,最終會被刪除或改變;

第四步: 設定三列中的中間內容區

.main {
       width: 100%;
       min-height: 650px;
       background-color: #6CF;
       float:left;
     }


詳解:
1.width: 100%; 中間寬度為100%,其實就是600px,佔據目前容器全部內容區空間(不包括padding的400px);
2.min-height: 650px; 設定一個最小高度,當內容不多時,仍能顯示出足夠的高度,不影響頁面的整體美觀與用戶體驗;
3.background-color: #6cf; 設定參考背景色,根據需要決定最終是否保留;
4.float: left; 至關重要,將中間區塊浮動起來,脫離文檔流,並佔據全部內容區,此時左右區塊會自動補位上移;

第五步: 設定左列的顯示樣式

.left {
   width: 200px;
   min-height: 650px;
   background-color: #FD6FCF;
   float:left;
   margin-left: -100%;
   position: relative;
   left: -200px;
}


#詳解:
1.width: 200px; 左列寬度為200px,與容器中預留的padding寬度相同;
2.min-height: 650px; 寬度與中間列保持一致,當然你也可以不一致;
3.background-color: #fd6fcf; 背景參考色,根據情況決定最終是否保留;
4.float: left; 很重要,浮動起來脫離文檔流,因中間塊寬度為100% ,所以會被擠壓到下面;
5.margin-left: -100%; 將左列透過設定負外邊距方式移到父容器預留的左側padding中;
注意-100% ,等價於: -600px,因為目前父容器.container寬度就是600,設定負值,就是向反方向拉元素
但此時,左列會佔據了中間內容區的左邊的200px位置;
6.position: relative; 設定左列的元素定位方式為:相對定位,相對於原來的位置,仍在文檔流中.
7.left: -200px; 負值是向左移動,,將左列移到容器container的padding-left區內,注意,
如果沒有設定容器container的padding,你會看不到左列的.

##第六步: 設定右列的顯示樣式#

.right {
   width: 200px;
   min-height: 650px;
   background-color: #FC0107;
   float:left;
   margin-left: -200px;
   position: relative;
   right: -200px;
}


1.right: 200px; 宽度与左列相同,均为200px;
2.min-height: 650px; 最小高度与左列一致;
3.background-color: #fc0107; 设置参考背景色;
4.float: left; 设置左浮动,脱离文档流后,对它重新进行排列;
5.margin-left: -200px; 向反方向上移200px,其实就是与中间列并排显示;
6.position: relative; 设置相对定位
7.right: -200px; 将右列移动到容器的padding-right区域内

到此为止,圣杯布局完成~~
聪明的你,学会了吗?

以上是手把手教學經典聖杯三列佈局的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn