批改状态:合格
老师批语:
主题:
三列布局的三种方式:绝对定位布局,“双飞翼”布局,“圣杯”布局。
双飞翼布局特点:网页主体部分由中间部分与两侧部分用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>点击 "运行实例" 按钮查看在线实例
总结:我个人喜欢双飞翼布局,两者的效果差不多,由于块元素基本都是自增长,网页内容的填充也比较方便,需要注意的是布局时文档流的变化和相对定位的目标变化,以及两种经典布局的区别。
以下是手写代码:

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号