圣杯布局
特点
- DOM元素的书写顺序不得更改。
- 主面板部分优先渲染(一般主面板会比侧栏内容重要)。
- 当面板的
middle
内容部分比两边的子面板宽度小的时候,布局就会乱掉。可以通过设置middle
的min-width
属性或使用双飞翼布局避免问题。
布局步骤
- 三者都设置向左浮动
- 设置
middle
宽度为100%,设置两侧栏的宽度。 - 设置负边距,
left
设置负左边距为100%,right
设置负左边距为负的自身宽度 - 设置
middle
的padding
值给左右两个子面板留出空间。 - 设置两个子面板为相对定位,
left
的left
值为负的left
宽度,right
的right
值为负的right
宽度。
代码实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>圣杯布局</title>
</head>
<style type="text/css">
.middle {
float: left;
width: 100%;
background-color:red;
}
.left {
float: left;
width: 190px;
margin-left: -100%;
position: relative;
left: -190px;
background-color: gray;
}
.right {
float: left;
width: 230px;
margin-left: -230px;
position: relative;
right: -230px;
background-color: gray;
}
.container {
padding: 0 230px 0 190px;
}
</style>
<body>
<div class="container">
<div class="middle">middle</div>
<div class="right">right</div>
<div class="left">left</div>
</div>
</body>
</html>
![圣杯布局](https://img-blog.csdnimg.cn/20190406102001859.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3MzU0NDU5,size_16,color_FFFFFF,t_70)
双飞翼布局
特点
- 主面板部分优先渲染(一般主面板会比侧栏内容重要)。
- 圣杯采用的是
padding
,而双飞翼采用的margin
,解决了圣杯布局middle
的最小宽度不能小于左侧栏的缺点。 - 双飞翼布局不用设置相对布局,以及对应的
left
和right
值。 - 通过引入相对布局,可以实现三栏布局的各种组合,例如对右侧栏设置
position: relative; left: 190px;
可以实现left+right+middle
的布局。
布局步骤
- 三者都设置向左浮动。
- 设置
container
宽度为100%,设置两个侧栏的宽度。 - 设置 负边距,
left
设置负左边距为100%,right
设置负左边距为负的自身宽度。 - 设置
middle
的margin
值给左右两个子面板留出空间。
代码实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>双飞翼布局</title>
</head>
<style type="text/css">
.container {
float: left;
width: 100%;
}
.left {
float: left;
width: 190px;
margin-left: -100%;
background-color:gray;
}
.right {
float: left;
width: 230px;
margin-left: -230px;
background-color:gray;
}
.middle {
margin: 0 230px 0 190px;
background-color:red;
}
</style>
<body>
<div class="container">
<div class="middle">middle</div>
</div>
<div class="left">left</div>
<div class="right">right</div>
</body>
</html>
![双飞翼布局](https://img-blog.csdnimg.cn/20190406102616505.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3MzU0NDU5,size_16,color_FFFFFF,t_70)