flex布局(两边宽度固定 + 中间扩充)
*{
margin: 0;
padding: 0;
}
.box{
display: flex;
}
.left{
width: 100px;
height: 100px;
background-color: #f00;
}
.center{
height: 100px;
background-color: yellow;
flex:1;
}
.right{
width: 100px;
height: 100px;
background-color: #f0f;
}
<div class="box">
<div class="left">111</div>
<div class="center">222</div>
<div class="right">333</div>
</div>
圣杯布局
圣杯布局是一种常见的实现三栏布局的方式,两端固定,中间自适应
编写步骤
1.搞一个容器,里面放三个盒子
2.设置两侧盒子的宽度固定
3.设置中间盒子的宽度为容器的宽度(100%)
4.设置容器的左右padding为两侧盒子的宽度
5.让3个盒子在同一方向上浮动
6.设置左盒子的margin-left=-100%
7.通过定位调整左边盒子,让左边的盒子不要盖住中间的内容区域
8.设置右边盒子的margin-left=-自身的宽度
9.通过定位调整右边盒子,让右边盒子不要盖住中间的内容区域
注意点:给容器设置最小宽度,防止缩小后变形
<div id="box">
<div class="main">
中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容
中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容中间的内容
</div>
<div class="left"></div>
<div class="right"></div>
</div>
*{
margin: 0;
padding: 0;
}
#box{
overflow: hidden;
padding: 0 100px;
background-color: #ccc;
min-width: 400px;
}
.main{
width: 100%;
height: 100px;
background-color: #f00;
float: left;
}
.left{
width: 100px;
height: 100px;
background-color: blue;
float: left;
margin-left: -100%;
position: relative;
left: -100px;
}
.right{
width: 100px;
height: 100px;
background-color: yellow;
float: left;
margin-left: -100px;
position: relative;
left: 100px;
}
双飞翼布局
双飞翼布局也是一种常见的实现三栏布局的方式
编写步骤
1.搞一个容器,里面放3个盒子
2.设置两侧盒子的宽度固定
3.设置中间盒子的宽度为容器的宽度(100%)
4.让3个盒子在同一方向上浮动
5.给中间的盒子里面放一个子盒子
6.设置子盒子的margin:0 两侧盒子的宽度;
7.给左边盒子设置margin-left:-100%;
8.给右边的盒子设置margin-left:-自身的宽度;
*{
margin: 0;
padding: 0;
}
.left,.right{
width: 100px;
height: 100px;
background-color: #f00;
float: left;
}
.center{
width: 100%;
height: 100px;
background-color: blue;
float: left;
}
.center>.main{
background-color: #ccc;
margin: 0 100px;
height: 100px;
}
.left{
margin-left: -100%;
}
.right{
margin-left: -100px;
}
.box{
background-color: purple;
overflow: hidden;
}
<div class="box">
<div class="center">
<div class="main"></div>
</div>
<div class="left"></div>
<div class="right"></div>
</div>
table
*{
margin: 0;
padding: 0;
}
.box{
width: 100%;
display: table;
}
.box>div{
display: table-cell;
}
.left{
width: 100px;
height: 100px;
background-color: red;
}
.center{
height: 100px;
background-color: blue;
}
.right{
width: 100px;
height: 100px;
background-color: skyblue;
}
<div class="box">
<div class="left">
<p>111</p>
<p>222</p>
</div>
<div class="center">center</div>
<div class="right">right</div>
</div>
高度由内容决定(真的是这样的,不信你去控制台看!)