圣杯布局
实现方法
1、HTML 结构中,中间内容区域优先渲染。
2、使用 float 使三列浮动。
3、对左右两列使用负边距,使其上浮到中间列的两侧。
4、使用相对定位调整左右两列的位置。
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<title>圣杯布局示例</title>
<style>
body {
min-width: 550px;
}
#container {
padding-left: 200px;
padding-right: 150px;
}
#container .column {
float: left;
}
#center {
width: 100%;
}
#left {
width: 200px;
margin-left: -100%;
position: relative;
right: 200px;
}
#right {
width: 150px;
margin-right: -150px;
}
#footer {
clear: both;
}
</style>
</head>
<body>
<div id="header">Header</div>
<div id="container">
<div id="center" class="column">Center</div>
<div id="left" class="column">Left</div>
<div id="right" class="column">Right</div>
</div>
<div id="footer">Footer</div>
</body>
</html>
双飞翼布局
实现方法
1、HTML 结构中,中间内容区域优先渲染,并包含一个内部容器。
2、使用 float 使三列浮动。
3、对左右两列使用负边距,使其上浮到中间列的两侧。
4、使用内部容器的 margin 为左右两列腾出空间。
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<title>双飞翼布局示例</title>
<style>
body {
min-width: 550px;
}
.column {
float: left;
}
#main {
width: 100%;
}
#main-wrap {
margin: 0 190px 0 190px;
}
#left {
width: 190px;
margin-left: -100%;
}
#right {
width: 190px;
margin-left: -190px;
}
</style>
</head>
<body>
<div id="header">Header</div>
<div id="main" class="column">
<div id="main-wrap">Center</div>
</div>
<div id="left" class="column">Left</div>
<div id="right" class="column">Right</div>
<div id="footer">Footer</div>
</body>
</html>
Flex 布局
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<title>Flex 三栏布局示例</title>
<style>
body {
display: flex;
flex-direction: column;
min-height: 100vh;
margin: 0;
}
#header,
#footer {
background-color: #f0f0f0;
padding: 20px;
}
#content {
display: flex;
flex: 1;
}
#left,
#right {
background-color: #e0e0e0;
width: 200px;
}
#left {
order: -1;
}
#center {
flex: 1;
background-color: #d0d0d0;
padding: 20px;
}
</style>
</head>
<body>
<div id="header">Header</div>
<div id="content">
<div id="center">Center</div>
<div id="left">Left</div>
<div id="right">Right</div>
</div>
<div id="footer">Footer</div>
</body>
</html>