两栏布局
1. BFC实现
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
margin: 0; padding: 0;
}
#app{
width: 100vw; height: 400px;
background-color: #55ff00;
/* overflow: hidden; */
}
.box1{
/* 一边固定宽度(设置在左边或右边按需求即可) */
width: 100px; height: 100px;
float: left;
margin-right: 50px;
background-color: #55ffff;
}
.box2{
/* 一边不设宽度(不设默认为父元素100%) */
height: 150px;
/* 触发BFC */
overflow: hidden;
background-color: #ffff7f;
}
</style>
</head>
<body>
<div id="app">
<div class="box1">
盒子一
</div>
<div class="box2">
盒子二
</div>
</div>
</body>
</html>
2. flex实现
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
#app {
width: 100vw;
height: 400px;
background-color: #55ff00;
/*转换布局方式*/
display: flex;
}
.box1 {
width: 100px;
height: 100px;
background-color: #55ffff;
}
.box2 {
height: 150px;
overflow: hidden;
background-color: #ffff7f;
/*让其将剩余空间铺满*/
flex: 1;
}
</style>
</head>
<body>
<div id="app">
<div class="box1">
盒子一
</div>
<div class="box2">
盒子二
</div>
</div>
</body>
</html>
3. 定位实现
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
* {
padding: 0;
margin: 0;
}
body {
position: relative;
}
#left {
width: 300px;
height: 400px;
background: yellow;
/* 定位实现两栏布局关键 */
position: absolute;
top: 0;
left: 0;
/* margin-right:300px ; */
}
#right {
height: 500px;
background-color: blue;
/* 外边距拉开距离 */
margin-left: 300px;
}
</style>
</head>
<body>
<div id="left">
</div>
<div id="right">
</div>
</body>
</html>
三栏布局
1. 浮动
原理:左边左浮动,中间右浮动,最后不设浮动(右边设overflow:hidden触发BFC)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
padding: 0; margin: 0;
}
body{
overflow: hidden;
}
.left {
width: 100px;
height: 300px;
background: #0000FF;
/* 三栏布局关键 */
float: left;
}
.center {
height: 300px;width: 100px;
background: #ffff00;
/* 三栏布局关键 */
float: right;
}
.right {
height: 500px;
background: #aaff00;
/* 三栏布局关键 */
overflow: hidden;
}
</style>
</head>
<body>
<div class="left">
</div>
<div class="center">
</div>
<div class="right">
</div>
</body>
</html>
2. flex布局
实现:左右设定固定宽度,中间使用flex:1 让其自动适应铺满。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
padding: 0; margin: 0;
}
body{
/* Flex实现三栏布局关键 */
display: flex;
}
.left {
width: 100px;
height: 300px;
background: #0000FF;
}
.center {
height: 500px;
background: #ffff00;
/* Flex实现三栏布局关键 */
flex: 1;
}
.right {
height: 300px; width: 100px;
background: #aaff00;
}
</style>
</head>
<body>
<div class="left">
</div>
<div class="center">
</div>
<div class="right">
</div>
</body>
</html>
3. 定位实现
实现:左边设置绝对定位(top:0;left:0),中间设置左右边距,右边设置左边设置绝对定位(top:0;right:0)
原理:利用绝对定位让左右元素靠近左右边框,而中间就不设宽度自适应但是得设置外边距和左右元素拉开距离
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
padding: 0; margin: 0;
}
body{
/* 定位实现三栏布局关键 */
position: relative;
}
.left {
width: 100px;
height: 300px;
background: #0000FF;
/* 实现三栏布局关键 */
position: absolute;
top: 0;
left: 0;
}
.center {
height: 500px;
background: #ffff00;
/* 实现三栏布局关键 */
margin: 0 100px;
}
.right {
height: 300px; width: 100px;
background: #aaff00;
/* 实现三栏布局关键 */
top: 0;
right: 0;
position: absolute;
}
</style>
</head>
<body>
<div class="left">
</div>
<div class="center">
</div>
<div class="right">
</div>
</body>
</html>