1、宽度自适应两列布局
两列布局可以使用浮动来完成,左列设置左浮动,右列设置右浮动,这样就省的再设置外边距了。
当元素使用了浮动之后,会对周围的元素造成影响,那么就需要清除浮动,通常使用两种方法。可以给受到影响的元素设置 clear:both,即清除元素两侧的浮动,也可以设置具体清除哪一侧的浮动:clear:left 或 clear:right,但必须清楚的知道到底是哪一侧需要清除浮动的影响。也可以给浮动的父容器设置宽度,或者为 100%,同时设置 overflow:hidden,溢出隐藏也可以达到清除浮动的效果。
同理,两列宽度自适应,只需要将宽度按照百分比来设置,这样当浏览器窗口调整时,内容会根据窗口的大小,按照百分比来自动调节内容的大小。
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>宽度自适应两列布局</title> 6 <style> 7 *{margin:0;padding:0;} 8 #herder{ 9 height:50px;10 background:blue;11 }12 .main-left{13 width:30%;14 height:800px;15 background:red;16 float:left;17 }18 .main-right{19 width:70%;20 height:800px;21 background:pink;22 float:right;23 }24 #footer{25 clear:both;26 height:50px;27 background:gray;28 }29 </style>30 </head>31 <body>32 <div id="herder">页头</div>33 <div class="main-left">左列</div>34 <div class="main-right">右列</div>35 <div id="footer">页脚</div>36 </body>37 </html>
宽度自适应两列布局在网站中一般很少使用,最常使用的是固定宽度的两列布局。
要实现固定宽度的两列布局,也很简单,只需要把左右两列包裹起来,也就是给他们增加一个父容器,然后固定父容器的宽度,父容器的宽度固定了,那么这两列就可以设置具体的像素宽度了,这样就实现了固定宽度的两列布局。
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>固定宽度两列布局</title> 6 <style> 7 *{margin:0;padding:0;} 8 #herder{ 9 height:50px;10 background:blue;11 }12 #main{13 width:960px;14 margin:0 auto;15 overflow:hidden;16 }17 #main .main-left{18 width:288px;19 height:800px;20 background:red;21 float:left;22 }23 #main .main-right{24 width:672px;25 height:800px;26 background:pink;27 float:right;28 }29 #footer{30 width:960px;31 height:50px;32 background:gray;33 margin:0 auto;34 }35 </style>36 </head>37 <body>38 <div id="herder">页头</div>39 <div id="main">40 <div class="main-left">左列</div>41 <div class="main-right">右列</div>42 </div>43 <div id="footer">页脚</div>44 </body>45 </html>
同理,只需要给定父容器的宽度,然后让父容器水平居中。
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>两列居中自适应布局</title> 6 <style> 7 *{margin:0;padding:0;} 8 #herder{ 9 height:50px;10 background:blue;11 }12 #main{13 width:80%;14 margin:0 auto;15 overflow:hidden;16 }17 #main .main-left{18 width:20%;19 height:800px;20 background:red;21 float:left;22 }23 #main .main-right{24 width:80%;25 height:800px;26 background:pink;27 float:right;28 }29 #footer{30 width:80%;31 height:50px;32 background:gray;33 margin:0 auto;34 }35 </style>36 </head>37 <body>38 <div id="herder">页头</div>39 <div id="main">40 <div class="main-left">左列</div>41 <div class="main-right">右列</div>42 </div>43 <div id="footer">页脚</div>44 </body>45 </html>
和单列布局相同,可以把所有块包含在一个容器中,这样做方便设置,但增加了无意义的代码,固定宽度就是给定父容器的宽度,然后中间主体使用浮动。
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>横向两列布局</title> 6 <style> 7 *{margin:0;padding:0;} 8 #warp{ 9 width:960px;10 margin:0 auto;11 margin-top:10px;12 }13 #herder{14 height:50px;15 background:blue;16 }17 #nav{18 height:30px;19 background:orange;20 margin:10px 0;21 }22 #main{23 width:100%;24 margin-bottom:10px;25 overflow:hidden;26 }27 #main .main-left{28 width:640px;29 height:200px;30 background:yellow;31 float:left;32 }33 #main .main-right{34 width:300px;35 height:200px;36 background:pink;37 float:right;38 }39 #content{40 width:100%;41 overflow:hidden;42 }43 #content .content-left{44 width:640px;45 height:800px;46 background:lightgreen;47 float:left;48 }49 #content .content-right-sup{50 width:300px;51 height:500px;52 background:lightblue;53 float:right;54 }55 #content .content-right-sub{56 width:300px;57 height:240px;58 background:purple;59 margin-top:20px;60 float:right;61 }62 #footer{63 height:50px;64 background:gray;65 margin-top:10px;66 }67 </style>68 </head>69 <body>70 <div id="warp">71 <div id="herder">页头</div>72 <div id="nav">导航</div>73 <div id="main">74 <div class="main-left">左-上</div>75 <div class="main-right">右-上</div>76 </div>77 <div id="content">78 <div class="content-left">左-下</div>79 <div class="content-right-sup">右-上</div>80 <div class="content-right-sub">右-下</div>81 </div>82 <div id="footer">页脚</div>83 </div>84 </body>85 </html>