Correction status:qualified
Teacher's comments:
主题:
三列布局的三种方式:绝对定位布局,“双飞翼”布局,“圣杯”布局。
双飞翼布局特点:网页主体部分由中间部分与两侧部分用margin分开并定位。
圣杯布局特点:网页主体部分由中间部分用padding包住两侧部分并用margin定位。
具体实现效果如下:
“双飞翼”布局代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>2.双飞翼布局</title> <style type="text/css"> .header,.footer { width:100%; /*使头部和尾部宽度自适应*/ height:50px; background-color:grey; } .footer { clear:both; /*为尾部清除浮动*/ } .content { width:1000px; min-height:100%; /*设置头尾内容区域最小高度100%以便于后期添加网站内容*/ background-color:coral; margin:0 auto; /*设置内容区域块在父容器中水平居中*/ text-align: center; /*设置内容区域的文本水平居中*/ line-height:50px; /*设置内容区域文本垂直居中*/ } .container { width:1000px; /*只设置宽度,高度由容器内元素指定*/ background-color:yellow; margin:0 auto; /*设置中间容器水平居中*/ } .wrap { width:100%; /*宽度为100%会将后面浮动的元素挤到下一行显示*/ min-height:650px; background-color:pink; float:left; /*将元素左浮动,会脱离文档流*/ } .main { min-height:650px; margin:0 200px; /*将被覆盖的区域挤出来*/ } .left { width:200px; min-height:650px; background-color:skyblue; float:left; margin-left:-100%; /*将浮动的左边DOM移动到正确位置*/ } .right { width:200px; min-height:650px; background-color:lightgreen; float:left; margin-left:-200px; /*这里只需将margin值定位要移动的元素宽度就可以*/ } </style> </head> <body> <!-- 头部 --> <div class="header"> <div class="content">头部</div> </div> <!-- 主体 --> <div class="container"> <div class="wrap"> <div class="main">主体</div> </div> <div class="left">左边</div> <div class="right">右边</div> </div> <!-- 尾部 --> <div class="footer"> <div class="content">尾部</div> </div> </body> </html>
点击 "运行实例" 按钮查看在线实例
“圣杯”布局代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>3.圣杯布局</title> <style type="text/css"> .header,.footer { width:100%; /*使头部和尾部宽度自适应*/ height:50px; background-color:grey; } .footer { clear:both; /*为尾部清除浮动*/ } .content { width:1000px; min-height:100%; /*设置头尾内容区域最小高度100%以便于后期添加网站内容*/ background-color:coral; margin:0 auto; /*设置内容区域块在父容器中水平居中*/ text-align: center; /*设置内容区域的文本水平居中*/ line-height:50px; /*设置内容区域文本垂直居中*/ } .container { width:600px; /*这里和双飞翼布局宽度不同*/ background-color:yellow; margin:0 auto; /*设置中间容器水平居中*/ } .main { width:100%; /*宽度为100%会将后面浮动的元素挤到下一行显示*/ min-height:650px; background-color:pink; float:left; /*将元素左浮动,会脱离文档流*/ } .left { width:200px; min-height:650px; background-color:skyblue; float:left; margin-left:-100%; /*这里和双飞翼布局设置一样*/ /*相对定位移动元素到正确位置*/ position:relative; /*相对于浮动元素文档流*/ right:200px; /*向左移动200px*/ } .right { width:200px; min-height:650px; background-color:lightgreen; float:left; margin-left:-200px; /*这里和双飞翼布局设置一样*/ /*相对定位移动元素到正确位置*/ position:relative; /*相对于浮动元素文档流*/ left:200px; /*向右移动200px*/ } </style> </head> <body> <!-- 头部 --> <div class="header"> <div class="content">头部</div> </div> <!-- 主体 --> <div class="container"> <div class="main">主体</div> <div class="left">左边</div> <div class="right">右边</div> </div> <!-- 尾部 --> <div class="footer"> <div class="content">尾部</div> </div> </body> </html>
点击 "运行实例" 按钮查看在线实例
总结:我个人喜欢双飞翼布局,两者的效果差不多,由于块元素基本都是自增长,网页内容的填充也比较方便,需要注意的是布局时文档流的变化和相对定位的目标变化,以及两种经典布局的区别。
以下是手写代码: