
本文介绍常用的css布局:
- 三栏布局
- 两列自适应布局
- 元素居中
盒模型简介:

三栏布局
中间列自适应宽度,两边宽度固定
1. 圣杯布局
<!DOCTYPE html>
<html>
<head>
<style>
/* This is a single-line comment */
.container {
margin-left: 110px;
margin-right: 110px;
}
.left {
float: left;
width: 100px;
height: 400px;
background: red;
margin-left: -100%;
position: relative;
left: -110px;
color:#fff
}
.center {
float: left;
width:100%;
height: 500px;
background: yellow;
}
.right {
float: left;
width: 100px;
height: 400px;
background: blue;
margin-left: -100px;
position: relative;
right: -110px;
color:#fff
}
</style>
</head>
<body>
<article class="container">
<div class="center">
<h2>圣杯布局</h2>
</div>
<div class="left">左侧</div>
<div class="right">右侧</div>
</article>
</body>
</html>

双飞翼布局
<!DOCTYPE html>
<html>
<head>
<style>
/* This is a single-line comment */
.container {
min-width: 600px;
}
.left {
float: left;
width: 200px;
height: 400px;
background: red;
margin-left: -100%;
}
.center {
float: left;
width: 100%;
height: 500px;
background: yellow;
}
.center .inner {
margin: 0 200px; //新增部分
}
.right {
float: left;
width: 200px;
height: 400px;
background: blue;
margin-left: -200px;
}
</style>
</head>
<body>
<article class="container">
<div class="center">
<div class="inner">双飞翼布局</div>
</div>
<div class="left"></div>
<div class="right"></div>
</article>
</body>
</html>

两列自适应布局
两列自适应布局是指一列由内容撑开,另一列撑满剩余宽度的布局方式
float+overflow
<!DOCTYPE html>
<html>
<head>
<style>
/* This is a single-line comment */
.parent {
overflow: hidden;
background:yellow;
height:100px;
}
.left {
float: left;
background:blue;
width:200px;
color:#fff;
}
.right {
overflow: hidden;
background:red;
color:#fff
}
</style>
</head>
<body>
<div class="parent">
<div class="left" >
<p>left</p>
</div>
<div class="right">
<p>right</p>
</div>
</div>
</body>
</html>

Flex布局
垂直居中
<!DOCTYPE html>
<html>
<head>
<style>
/* This is a single-line comment */
.parent {
background:yellow;
height:100px;
display:flex;
justify-content:center;
align-items:center
}
.left {
flex:0 1 200px;
background:blue;
text-align:center;
color:#fff;
}
.center {
flex:0 1 200px;
background:green;
text-align:center;
color:#fff;
}
.right {
flex:0 1 200px;
background:red;
color:#fff;
text-align:center;
}
</style>
</head>
<body>
<div class="parent">
<div class="left" >
<p>left</p>
</div>
<div class="center">
<p>center</p>
</div>
<div class="right">
<p>right</p>
</div>
</div>
</body>
</html>

居中分散
<!DOCTYPE html>
<html>
<head>
<style>
/* This is a single-line comment */
.parent {
background:yellow;
height:100px;
display:flex;
justify-content:space-around;
align-items:center
}
.left {
flex:0 1 200px;
background:blue;
text-align:center;
color:#fff;
}
.center {
flex:0 1 200px;
background:green;
text-align:center;
color:#fff;
}
.right {
flex:0 1 200px;
background:red;
color:#fff;
text-align:center;
}
</style>
</head>
<body>
<div class="parent">
<div class="left" >
<p>left</p>
</div>
<div class="center">
<p>center</p>
</div>
<div class="right">
<p>right</p>
</div>
</div>
</body>
</html>

两边对齐
<!DOCTYPE html>
<html>
<head>
<style>
/* This is a single-line comment */
.parent {
background:yellow;
height:100px;
display:flex;
justify-content:space-between;
align-items:center
}
.left {
flex:0 1 200px;
background:blue;
text-align:center;
color:#fff;
}
.center {
flex:0 1 200px;
background:green;
text-align:center;
color:#fff;
}
.right {
flex:0 1 200px;
background:red;
color:#fff;
text-align:center;
}
</style>
</head>
<body>
<div class="parent">
<div class="left" >
<p>left</p>
</div>
<div class="center">
<p>center</p>
</div>
<div class="right">
<p>right</p>
</div>
</div>
</body>
</html>

元素居中
绝对定位
<!DOCTYPE html>
<html>
<head>
<style>
.parent{
width: 500px;
height: 500px;
position:relative;
background:yellow
}
.center {
position: absolute;
left:0;
right:0;
top:0;
bottom:0;
margin:auto;
background:blue;
width:200px;
height:200px;
color:#fff;
text-align:center;
line-height:200px
}
</style>
</head>
<body>
<div class="parent">
<div class="center">center</div>
</div>
</body>
</html>
Flex居中
<!DOCTYPE html>
<html>
<head>
<style>
.parent{
width: 500px;
height: 500px;
background:yellow;
display:flex;
justify-content:center;
align-items:center;
}
.center {
background:blue;
width:200px;
height:200px;
color:#fff;
text-align:center;
line-height:200px;
flex: 0 1 200px;
}
</style>
</head>
<body>
<div class="parent">
<div class="center">center</div>
</div>
</body>
</html>




















