Correction status:qualified
Teacher's comments:
此次作业内容主要是经典的两种三列布局:双飞翼和圣杯布局。
双飞翼和圣杯布局主要是实现左、右两侧定宽,中间自适应宽度的三列布局。总体思路非常相像。都是将中间区块优先放在文档流前面,以便于优先渲染,然后是左、右两侧区块,并且三个区块全部进行左浮动。
不同之间在双飞翼的中间区块居中并且宽度为父级区块的100%,左、右两是在中间区块的上面左右两侧,为了显示出被遮挡的内容,用margin进行左右外边距的设置,分别与左、右两侧区块同宽。
圣杯布局的中间区块和左、右两侧区块是三个部分,利用中间区块设置padding内边距占位,再将左、右区块进行相对定位移动到padding区域。
具体代码分别如下。
1、双飞翼三列布局代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>双飞翼三列布局-3月27日作业</title> <style type="text/css"> /*设置网站头部和底部样式*/ .header,.footer{ /*宽度自适应*/ width: 100%; height: 60px; background-color: lightgray; } .footer{ /*将底部清除浮动,以使其正确显示在浮动区块下方*/ clear: both; } .content{ /*头部与底部显示内容的样式*/ width: 1000px; height: 100%; background-color: gray; /*显示内容自动居中*/ margin: auto; /*内容中的文本水平居中*/ text-align: center; /*内容中的文本垂直居中*/ line-height: 60px; } /*给主体内容创建父级容器并设置样式*/ .container{ width: 1000px; background-color: yellow; margin: auto; } /*创建中间块的父级区块,设置基本样式*/ .wrap{ width: 1000px; background-color: gray; /*中间的主体、左侧和右侧都设置为左浮动*/ float: left; overflow: hidden; } /*设置中间主体区块的样式*/ .main{ min-height: 650px; background-color: wheat; /*通过margin设置左右外边距,使内容显示出来*/ margin: 0 200px; } /*左侧样式*/ .left{ width: 200px; min-height: 650px; background-color: pink; /*左浮动*/ float: left; /*通过margin-left设置使用左侧区块从下方移至中间区块的左侧位置*/ margin-left: -100%; } /*右侧样式*/ .right{ width: 200px; min-height: 650px; background-color: lightgreen; /*左浮动*/ float: left; /*通过margin-left设置使用左侧区块从下方移至中间区块的右侧位置*/ margin-left: -200px; } </style> </head> <body> <!-- 网站头部 --> <div class="header"> <div class="content"> 头部内容 </div> </div> <!-- DOM结构 --> <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>
点击 "运行实例" 按钮查看在线实例
2、圣杯三列布局代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>圣杯三列布局-3月27日作业</title> <style type="text/css"> /*设置网站头部和底部样式*/ .header,.footer{ /*宽度自适应*/ width: 100%; height: 60px; background-color: lightgray; } .footer{ /*将底部清除浮动,以使其正确显示在浮动区块下方*/ clear: both; } .content{ /*头部与底部显示内容的样式*/ width: 1000px; height: 100%; background-color: gray; /*显示内容自动居中*/ margin: auto; } /*给主体内容创建父级容器并设置样式*/ .container{ /*设置容器宽度,此处应特别注意,与双飞翼不同。双飞翼的宽度是100%,而圣杯的宽度是中间与左、右三个部分的和是100%*/ width: 600px; background-color: yellow; margin: auto; /*防止高度塌陷*/ overflow: hidden; /*因为容器宽度只有600px,所以用padding进行点位,以便于使left和right能移动到padding区*/ padding: 0 200px; } /*设置中间主体区块的样式*/ .main{ /*必须设置宽度为父级的100%,将左、右侧的浮动区块挤到下边*/ width: 100%; min-height: 650px; background-color: wheat; /*左浮动*/ float: left; } /*左侧样式*/ .left{ width: 200px; min-height: 650px; background-color: pink; /*左浮动*/ float: left; /*左侧区块从下边移至中间区块左侧*/ margin-left: -100%; /*使左侧区块移动到padding区*/ position: relative; left: -200px; } /*右侧样式*/ .right{ width: 200px; min-height: 650px; background-color: lightgreen; /*左浮动*/ float: left; /*右侧区块从下边移至中间区块右侧*/ margin-left: -200px; /*使右侧区块移动到padding区*/ position: relative; right: -200px; } </style> </head> <body> <!-- 网站头部 --> <div class="header"> <div class="content"> 头部内容 </div> </div> <!-- DOM结构 --> <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>
点击 "运行实例" 按钮查看在线实例
效果图:
个人体会:
1、两种布局在进行中间主体区块的宽度设置时要特别注意,这是这两种布局很重要的区别。
双飞翼:main=100%,圣杯:main+left+right=100%。
2、从DOM结构上,圣杯布局比双飞翼简洁明了。但双飞翼虽然中间区块多了一个父级区块,但属性设置上比圣杯简单易懂,个人比较喜欢双飞翼布局。
手写代码:(正在抄写,稍后上传)