整理自撩课学院(www.itlike.com)
一、概述
1、都是三列布局
2、左右两栏固定宽度,中间部分自适应
3、中间部分要在浏览器中优先展示渲染
二、圣杯布局
1、步骤
1.1 设置父元素container的位置
1.2 将主体部分的三个子元素都设置左浮动
1.3 设置main宽度为 width:100% ,让其单独占满一行
1.4 设置 left(左元素) 和 right(右元素) 负的外边距
1.5 使用相对定位移动 left 和 right 到对应的位置
2、效果如下
3、代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>圣杯布局</title>
<style>
body {
margin: 0;
padding: 0;
}
.container {
/* 要有一个最小宽度 */
min-width: 400px;
height: 200px;
background-color: red;
/* 预留两边的宽度,用padding */
padding: 0 200px;
}
.left,
.right {
float: left;
width: 200px;
height: 200px;
background-color: royalblue;
}
.main {
float: left;
width: 100%;
height: 200px;
background-color: tomato;
}
.left {
margin-left: -100%;
position: relative;
left: -200px;
}
.right {
margin-left: -200px;
position: relative;
right: -200px;
}
</style>
</head>
<body>
<!-- 首先 要有个容器 -->
<div class="container">
<!-- 中间部分要先渲染,所以放在第一个 -->
<div class="main">中间栏</div>
<div class="left">左边栏</div>
<div class="right">右边栏</div>
</div>
</body>
</html>
三、双飞翼布局
1、步骤
1.1 左右两个div浮动,中间的div放在上面
1.2 通过margin-left 调整到一行
1.3 中间div添加一个子节点,设置margin调整位置
2、效果如下
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>双飞翼布局</title>
<style>
body {
margin: 0;
padding: 0;
}
.container {
min-width: 400px;
height: 200px;
background-color: red;
}
.left,
.right {
float: left;
width: 200px;
height: 200px;
background-color: royalblue;
}
.main {
float: left;
width: 100%;
height: 200px;
background-color: tomato;
}
.main-content {
margin: 0 200px;
}
.left {
margin-left: -100%;
}
.right {
margin-left: -200px;
}
</style>
</head>
<body>
<!-- 首先,容器 -->
<div class="container">
<div class="main">
<!-- 和圣杯布局不同的是,这里多了个div -->
<div class="main-content">中间栏</div>
</div>
<div class="left">左边栏</div>
<div class="right">右边栏</div>
</div>
</body>
</html>