题目写一个三栏布局; 高度固定 左边300px,右边300px;中间自适应;
1 :float
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
margin:0;
padding:0;
}
.main.warpper>div{
height: 100px;
}
.main.warpper .left{
width: 300px;
float:left;
background: red;
}
.main.warpper .center{
background: yellow;
}
.main.warpper .right{
background: blue;
width: 300px;
float:right;
}
</style>
</head>
<body>
<div class="main warpper">
<div class="left"></div>
<div class="right"></div>
<div class="center">float布局</div>
</div>
</body>
</html>
注意 居中的位置的盒子 放在最后面 ,触发了bfc;
2,position
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
margin:0;
padding:0;
}
.main.warpper>div{
height: 100px;
position: absolute;
}
.main.warpper .left{
width: 300px;
left:0;
background: red;
}
.main.warpper .center{
left:300px;
right:300px;
background: yellow;
}
.main.warpper .right{
width: 300px;
right:0;
background: red;
}
</style>
</head>
<body>
<div class="main warpper">
<div class="left"></div>
<div class="right"></div>
<div class="center">position布局</div>
</div>
</body>
</html>
利用position 使中间自适应撑开 且自适应
3 flex:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
margin:0;
padding:0;
}
.main.warpper{
height: 100px;
display: flex;
}
.main.warpper .left{
width: 300px;
flex:1;
background: red;
}
.main.warpper .center{
flex:1;
background: yellow;
}
.main.warpper .right{
flex:1;
background: blue;
width: 300px;
}
</style>
</head>
<body>
<div class="main warpper">
<div class="left"></div>
<div class="center">flex布局</div>
<div class="right"></div>
</div>
</body>
</html>
4,table-cell布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
margin:0;
padding:0;
}
.main.warpper{
width: 100%;
height: 100px;
display: table;
}
.main.warpper .left{
width: 300px;
display: table-cell;
background: red;
}
.main.warpper .center{
display: table-cell;
background: yellow;
}
.main.warpper .right{
display: table-cell;
background: blue;
width: 300px;
}
</style>
</head>
<body>
<div class="main warpper">
<div class="left"></div>
<div class="center">table布局</div>
<div class="right"></div>
</div>
</body>
</html>
5,grid网格布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
margin:0;
padding:0;
}
.main.warpper{
width: 100%;
display: grid;
grid-template-rows:100px;
grid-template-columns: 300px auto 300px;
}
.main.warpper .left{
background: red;
}
.main.warpper .center{
background: yellow;
}
.main.warpper .right{
background: blue;
}
</style>
</head>
<body>
<div class="main warpper">
<div class="left"></div>
<div class="center">grid布局</div>
<div class="right"></div>
</div>
</body>
</html>
总结一下 :
1, float布局的问题:需要经常清除浮动,兼容性会不错;
2,position ,自由简单,但是太粗放了 不推荐;
3,flex ,兼容性一般, 但是 很好用啊;
4,table-cell 兼容性不错,也很合理 ,逐渐被废弃;
5,grid css3的扩展 未来的趋势 代码量很少;
如果高度也不固定的话 那么flex 布局和table-cell布局能满足,其他的都要手动改