css实现三栏布局几种方法
1、绝对定位法
将左右两边使用absolute定位,设置宽高(px或百分比)。因为使用绝对定位会脱离文档流,后面的中间栏会自然流动到他们上面,然后中间栏使用margin属性,留出左右元素的宽度,就可以使中间栏自适应屏幕宽度了。注意中间栏的左右margin值应分别为左栏的宽度和右栏的宽度。
<body>
<!-- 分栏 -->
<!-- 左 -->
<div class="column1">左</div>
<!-- 右 -->
<div class="column2">右</div>
<!-- 中 -->
<div class="column3">中</div>
</body>
/* 左 右*/
.column1,
.column2 {
position: absolute;
width: 200px;
height: 100%;
}
.column1 {
left: 0;
background-color: cyan;
}
.column2 {
right: 0;
background-color: greenyellow;
}
/* 中间 */
.column3 {
/* width: 500px; */
height: 100%;
margin: 0 200px;
background-color: hotpink;
}
2、自身浮动法
自身浮动法的原理就是使用对左右使用分别使用float:left和float:right,float使左右两个元素脱离文档流,中间元素正常在正常文档流中,使用margin指定左右外边距对其进行一个定位。
<body>
<!-- 分栏 -->
<!-- 左 -->
<div class="column1">左</div>
<!-- 右 -->
<div class="column2">右</div>
<!-- 中 -->
<div class="column3">中</div>
</body>
.column1 {
/* width: 100px; */
width: 20%;
height: 100%;
float: left;
background-color: aqua;
}
.column2 {
/* width: 100px; */
width: 20%;
height: 100%;
float: right;
background-color: aquamarine;
}
.column3 {
margin: 0 20%;
/* width: 50%; */
/* width: 300px; */
height: 100%;
background-color: chocolate;
}
该布局法的好处是受外界影响小,但是不足是 三个元素的顺序,center一定要放在最后,这是和绝对定位不一样的地方,center占据文档流位置,所以一定要放在最后,左右两个元素位置没有关系。当浏览器窗口很小的时候,右边元素会被挤到下一行。
3、margin负值法
首先需要在center元素外部包含一个wrap容器(双层标签),包含div需要设置float:left,使其脱离文档流,设置左右margin(可为左右栏预留空间)。对左右栏也要设置float:left,左栏设置
margin-left值为负wrap容器的宽度,右栏margin-left值的绝对值要大于等于center栏的右margin值,否则右栏会挤到下一行。
<body>
<div class="wrap">
<div class="center-column">中间</div>
</div>
<div class="left-column">左</div>
<div class="right-column">右</div>
</body>
.wrap {
width: 100%;
height: 100%;
float: left;
background-color: hotpink;
}
.wrap .center-column {
height: 100%;
margin: 0 210px;
background-color: lawngreen;
}
.left-column,
.right-column {
float: left;
width: 210px;
height: 100%;
}
.left-column {
/* left块的margin负值一定要等于wrap容器的宽度 */
margin-left: -100%;
background-color: lightcoral;
}
.right-column {
/* right块的margin负值为中间块的右margin值 */
margin-left: -210px;
background-color: lightseagreen;
}
该方法在网站布局中非常常见,优点是三栏相互关联,有一定的抗性。需要注意的是,布局中间部分一定要放在前面,左右顺序不限制。对于left快的margin负值一定要等于wrap的宽度。
4、flex布局
使用一个容器包含三栏,容器设置为flex布局。注意center块一定要放在中间,并且设置flex:1。
<body>
<div class="box">
<div class="left">左边</div>
<div class="center">中间</div>
<div class="right">右边</div>
</div>
</body>
.box {
display: flex;
width: 100%;
height: 100%;
background-color: lightskyblue;
}
.left,
.right {
width: 200px;
height: 100%;
}
.left {
background-color: lime;
}
.right {
background-color: magenta;
}
.center {
flex: 1;
background-color: mediumorchid;
}


浙公网安备 33010602011771号