CSS三栏布局

11/12/2020 css

# CSS 三栏布局

代码中 div 都没有设置高度,使用时请自行设置高度

# 浮动+margin

<div class="container">
  <div class="left"></div>
  <div class="right"></div>
  <div class="main"></div>
</div>
1
2
3
4
5
.left {
  float: left;
  width: 200px;
  background-color: red;
}
.right {
  width: 200px;
  background-color: blue;
  float: right;
}
.main {
  margin-left: 200px;
  margin-right: 200px;
  background-color: green;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 浮动+BFC

<div class="container">
  <div class="left"></div>
  <div class="right"></div>
  <div class="main"></div>
</div>
1
2
3
4
5
.left {
  float: left;
  width: 200px;
  background-color: red;
}
.right {
  width: 200px;
  background-color: blue;
  float: right;
}
.main {
  overflow: hidden;
  background-color: green;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# flex

<div class="container">
  <div class="left"></div>
  <div class="main"></div>
  <div class="right"></div>
</div>
1
2
3
4
5
.container {
  display: flex;
}
.main {
  flex: 1;
  background-color: red;
}
.left {
  width: 200px;
  background-color: blue;
}
.right {
  width: 200px;
  background-color: green;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# table

<div class="container">
  <div class="left"></div>
  <div class="main"></div>
  <div class="right"></div>
</div>
1
2
3
4
5
.container {
  display: table;
}
.left {
  width: 200px;
  display: table-cell;
  background-color: red;
}
.main {
  display: table-cell;
  background-color: blue;
}
.right {
  display: table-cell;
  width: 200px;
  background-color: green;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 定位

<div class="container">
  <div class="left"></div>
  <div class="main"></div>
  <div class="right"></div>
</div>
1
2
3
4
5
.container {
  position: relative;
}
.main {
  margin: 0 200px;
  background-color: green;
}
.left {
  position: absolute;
  width: 200px;
  left: 0;
  background-color: red;
}
.right {
  position: absolute;
  width: 200px;
  background-color: blue;
  right: 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 双飞翼布局

<div class="content">
  <div class="main"></div>
</div>
<div class="left"></div>
<div class="right"></div>
1
2
3
4
5
.content {
  float: left;
  width: 100%;
}
.main {
  margin-left: 200px;
  margin-right: 200px;
  background-color: green;
}
.left {
  float: left;
  width: 200px;
  margin-left: -100%;
  background-color: red;
}
.right {
  width: 200px;
  float: right;
  margin-left: -200px;
  background-color: blue;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 圣杯布局

<div class="container">
  <div class="main"></div>
  <div class="left"></div>
  <div class="right"></div>
</div>
1
2
3
4
5
.container {
  margin-left: 200px;
  margin-right: 200px;
}
.main {
  float: left;
  width: 100%;
  background-color: red;
}
.left {
  float: left;
  width: 200px;
  margin-left: -100%;
  position: relative;
  left: -200px;
  background-color: blue;
}
.right {
  float: left;
  width: 200px;
  margin-left: -200px;
  position: relative;
  right: -200px;
  background-color: green;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25