多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 17.2.1.布局思想 表格布局思想: 使用表格,将页面分割为若干区域: 纵向:就用表格的tr。 横向:就用表格的td实现。 层层分割:每个区块只考虑是“横向”还是“纵向”。 表格布局思想,被抛弃的原因是:网页展示速度慢!非常慢! div+浮动布局思想: 纵向:使用div,自然上下排列出来。 横向:使用浮动div,并做好清除浮动工作(使浮动元素不影响后续元素)。 层层分割:每个区块只考虑是“横向”还是“纵向”。 典型布局效果: ![](https://img.kancloud.cn/a3/b1/a3b1c920abc4d58bc91d05306223d856_751x310.png) 课堂练习: 实现如下所示经典固定宽度布局,要求如下: 1,总宽度960px。 2,边框线1px; 3,所有线跟线之间的间隙都是5px 4,主体区域左右两个盒子的间隙是10px。 5,使用到h5中的新语义标签(header,nav,footer,aside,main等)。 6,扩展练习:加一个导航条在头部区域下面,加几个链接。 ## 17.2.2.纵向布局的实现 若干div自然就实现的纵向布局(自然从上到下排列出来) ![](https://img.kancloud.cn/05/71/0571962867b4a058791e41edddc9b36a_565x135.png) ## 17.2.3.横向布局的实现 若干div使用浮动,就横过来了。 注意清除浮动以使外层盒子有正常的高度(包住内层浮动盒子,并避免影响后续内容)。 ![](https://img.kancloud.cn/6e/7f/6e7f8f30ad692c3344e8e99bb35587bd_730x155.png) ## 17.2.4.整体布局的实现 非常简单,就是“层层分割”: 1,确定当下要进行布局设计的区域范围(毫无疑问是矩形盒子,而且最初肯定是整个网页区域); 2,确定该区域按纵向布局还是横向布局,依此进行盒子样式设计; 3,对第2步中分割出来的“小区域”,继续用第2步的思路进行布局设计,以此类推,层层细分。 ## 17.2.5.经典圣杯布局 所谓经典圣杯布局(不知道谁取的这个名字),就是一个网页最常见的布局需求,大致如下所示: ![](https://img.kancloud.cn/46/7e/467e5a73202e46fa61ee0075a6815e98_894x248.png) 其中主要的布局实现其实是中间部分。中间部分也可能是2栏(或左或右)。两边的宽度是固定的,中间主体部分的宽度可以是固定的,也可以是可变的(根据需要而定)。 案例1: 实现网页两栏典型布局效果。其中左边侧栏宽度固定(200px),右边主体栏宽度可变(最小600px)。 ![](https://img.kancloud.cn/68/fa/68fa3a98c04b9a4222ab46c89427456c_814x119.png) 方法1: 代码如下: ``` <div class="box"> <aside>边栏</aside> <main> <div class="main"> 主体主体主体主体</div> </div> </main> </div> <style> .mainpage{ border:1px solid red; margin:0 auto; width:90%; min-width: 800px; } .box{ border:1px solid red; margin:5px; } .box::after{ content:""; display:block; clear:both; } .box>aside{ background: yellow; width:200px; float:left; } .box>main{ margin-left:210px; } .box>main>.main{ border:solid 1px blue; background: pink; } </style> ``` 方法2; ``` <style> .mainpage{ border:1px solid red; margin:0 auto; width:90%; min-width: 800px; } .box{ border:1px solid red; margin:5px; } .box::after{ content:""; display:block; clear:both; } .box>aside{ background: yellow; width:200px; float:left; margin-left:-100%; } .box>main{ float:left; width:100%; height:40px; background: orange; } .box>main>.main{ margin-left:210px; border:solid 4px blue; background: pink; } </style> </head> <body> <div class="mainpage"> <header>头部</header> <div class="box"> <main> <div class="main"> 主体主体主体主体主体主体主体 </div> </main> <aside>边栏<br><br></aside> </div> <footer>底部</footer> </div> ``` 案例2: 实现网页三栏典型布局效果。其中左边和右边侧栏宽度固定(均为200px),中间主体栏宽度可变(最小400px)。 方法1: 代码如下: ``` <style> .mainpage{ border:1px solid red; margin:0 auto; width:90%; min-width: 800px; } .box{ border:solid 1px blue; } .box:after{ content:""; display: block; clear:both; } .box>.side_left{ width:200px; background: yellow; float:left; } .box>.side_right{ width:200px; background: yellow; float:right; } .box>main{ margin-left:210px; margin-right:210px; background: gray; } </style> </head> <body> <div class="mainpage"> <header>头部</header> <div class="box"> <aside class="side_left">左边栏<br><br></aside> <aside class="side_right">右边栏<br><br></aside> <main> <div class="main"> 主体主体主体主体主体主体主体 </div> </main> </div> <footer>底部</footer> ``` 方法1: ``` <style> .mainpage{ border:1px solid red; margin:0 auto; width:90%; min-width: 800px; } .box{ border:solid 1px blue; } .box:after{ content:""; display: block; clear:both; } .box>main{ float:left; width:100%; } .box>main>.main{ background: gray; margin-left:210px; margin-right:210px; } .box>.side_left{ width:200px; background: yellow; float:left; margin-left:-100%; } .box>.side_right{ width:200px; background: yellow; float:right; margin-left:-10px; } </style> </head> <body> <div class="mainpage"> <header>头部</header> <div class="box"> <main> <div class="main"> 主体主体主体主体主体主体主体 </div> </main> <aside class="side_left">左边栏<br><br></aside> <aside class="side_right">右边栏<br><br></aside> </div> <footer>底部</footer> </div> ```