经典布局方案(圣杯布局+双飞翼布局)左右固定,中间自适应
- 圣杯布局
- 双飞翼布局
- flex布局
其实就是左右固定,中间自适应
圣杯布局:浮动和负margin
就像一个对称的杯子,由中间和两边的把儿布局
<style>
html,body{
height: 100%;
overflow: hidden;
}
.container{
height: 100%;
padding: 0 200px;/*宽度为200 因为left和right左右两边的宽度都为200*/
}
.left,
.right{
width: 200px;
min-height: 200px;
background: lightblue;
}
.center{
width: 100%;
min-height: 400px;
background:lightcoral;
}
.left,
.center,
.right{
float: left;
}
.left{
margin-left: -100%;
position: relative;
left: -200px;
}
.right{
margin-right:-200px;
}
</style>
</head>
<body>
<div class="container clearfix">
<div class="center"></div>
<div class="left"></div>
<div class="right"></div>
</div>
</body>
过程解析+图解析
双飞翼布局 :浮动+负margin
就像一个人长了一双翅膀,身体是一体,但是翅膀是额外的,可要可不要
于是就有了下面这个布局
<div class="container">
<div class="center"></div>
</div>
<div class="left"></div>
<div class="right"></div>
全部代码为
<style>
html,body{
height: 100%;
overflow: hidden;
}
.container,
.left,
.right{
float: left;
}
.container{
width: 100%;
}
.container .center{
margin: 0 200px;
min-height: 400px;
background: lightcoral;
}
.left,
.right{
width: 200px;
min-height: 200px;
background: lightgoldenrodyellow;
}
.left{
margin-left: -100%;
}
.right{
margin-left: -200px ;
}
</style>
</head>
<body class="clearfix">
<div class="container">
<div class="center"></div>
</div>
<div class="left"></div>
<div class="right"></div>
</body>
这个的过程解析和上图差不多,可以自己分析一下
flex布局
以flex:0 0 200px;
为例
flex是一个缩写的属性,第一个值是放大的比例,
第二个是缩小的比例
第三个是在整个容器内你占空间的大小
所以left和right的大小就有了,就是200px。
flex的值为1 就是把剩余空间全占了
<style>
html,
body{
overflow: hidden;
}
.container{
display: flex;
justify-content: space-between;
height: 100%;
}
.left,
.right{
/* flex是一个缩写的属性,第一个值是放大的比例,
第二个是缩小的比例
第三个是在整个容器内你占空间的大小
所以left和right的大小就有了,就是200px*/
flex:0 0 200px;
height: 200px;
background: lightsalmon;
}
.center{
/* flex的值为1 就是把剩余空间全占了 */
flex: 1;
min-height: 400px;
background: lightseagreen;
}
</style>
</head>
<body>
<div class="container">
<div class="left"></div>
<div class="center"></div>
<div class="right"></div>
</div>
</body>
最后补充一种定位实现
<style>
html,
body{
height: 100%;
overflow: hidden;
}
.container{
position: relative;
height: 100%;
}
.left,
.right{
position: absolute;
top:0;
width: 200px;
min-height: 200px;
background: lightseagreen;
}
.left{
left: 0;
}
.right{
right: 0;
}
.center{
margin: 0 200px;
min-height: 400px;
background: lightseagreen;
}
</style>
</head>
<body>
<div class="container">
<div class="left"></div>
<div class="center"></div>
<div class="right"></div>
</div>
</body>