1. 程式人生 > >css——聖杯布局

css——聖杯布局

mpat spl edge float nta footer char styles tex

聖杯布局要求

  • header和footer各自占領屏幕所有寬度,高度固定
  • 中間dontainer部分為左中右三欄式布局
  • 三欄布局中左右兩側寬度固定,中間部分自動填充

實現方式

1.浮動

  • 先定義header和footer的樣式,使其寬度撐滿,高度隨意
  • container中三列設置為浮動和相對定位,且center部分放在最起那麽,對footer設置clear:both;清除浮動
  • 三列中的左右定寬200px,中間設置100%
  • 由於浮動關系,center會撐滿container,左右會被擠下去,給left添加margin-left:-100%,使left回到上一行的最左側
  • 會發現left遮住了center部分,給container設置padding-left:200px;padding-right:200px;
    ,給left和right騰出位置;
  • 這時的left由於padding的原因並不在最左側,之前設置了定位,可以給left添加right:200px,使left回到最左側
  • 對於right可以設置margin-right:-200px;,使其回到第一行

最好設置一個最小寬度防止頁面變形

 1 <!DOCTYPE html>
 2 <html>
 3 
 4 <head>
 5     <meta charset="utf-8">
 6     <meta http-equiv="X-UA-Compatible" content="IE=edge">
 7
<title>聖杯布局</title> 8 <link rel="stylesheet" href=""> 9 </head> 10 <style type="text/css" media="screen"> 11 /** 12 聖杯布局要求 13 1.header和footer各自占領屏幕所有寬度,高度固定。 14 2.中間的container是一個三欄布局。 15 3.三欄布局兩側寬度固定不變,中間部分自動填充整個區域。 16 4.中間部分的高度是三欄中最高的區域的高度。
17 */ 18 body { 19 min-width: 600px; 20 } 21 22 .header, .footer { 23 width: 100%; 24 height: 100px; 25 background: #ccc; 26 } 27 28 .footer { 29 clear: both; 30 } 31 32 .container { 33 padding: 0 200px; 34 } 35 36 .container .column { 37 float: left; 38 position: relative; 39 height: 400px; 40 } 41 42 #left { 43 width: 200px; 44 right: 200px; 45 background: pink; 46 margin-left: -100%; 47 } 48 49 #right { 50 width: 200px; 51 background: red; 52 margin-right: -200px; 53 } 54 55 #center { 56 width: 100%; 57 background: blue; 58 } 59 </style> 60 61 <body> 62 <div class="header">header</div> 63 <div class="container"> 64 <div id="center" class="column">center</div> 65 <div id="left" class="column">left</div> 66 <div id="right" class="column">right</div> 67 </div> 68 <div class="footer">footer</div> 69 </body> 70 71 </html>

2.flex彈性布局

  • 先定義header和footer的樣式,使其寬度撐滿,高度隨意
  • container中的left、center、right依次排列
  • container設置彈性布局display:flex;
  • left、right區域定寬,center部分設置flex:1;
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>聖杯布局-flex</title>
 6 </head>
 7 <style>
 8     body{
 9         min-width: 600px;
10     }
11     .header,.footer{
12         width: 100%;
13         height: 100px;
14         background: #ccc;
15     }
16     .container{
17         display: flex;
18     }
19     .container .column{
20         height: 400px;
21     }
22     #left{
23         width: 200px;
24         background: pink;
25     }
26     #center{
27         flex: 1;
28         background: blue;
29     }
30     #right{
31         width: 200px;
32         background: red;
33     }
34 </style>
35 <body>
36 <div class="header">header</div>
37 <div class="container">
38     <div id="left" class="column">left</div>
39     <div id="center" class="column">center</div>
40     <div id="right" class="column">right</div>
41 </div>
42 <div class="footer">footer</div>
43 </body>
44 </html>

css——聖杯布局