<img src="https://img-blog.csdn.net/20160507162305058?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
.main {
display: table;
background: pink;
margin: 0 auto;
border: 5px solid black;
}
.aaa {
width: 200px;
display: table-cell;
background: red;
}
.bbb {
background: green;
width: 200px;
display: table-cell;
margin: 0 10px;
}
.ccc {
background: blue;
width: 200px;
display: table-cell;
}
</style>
</head>
<body>
<div class="main">
<div class="aaa">
<p>aaa</p>
</div>
<div class="bbb">
<p>bbb</p>
<p>bbb</p>
<p>bbb</p>
<p>bbb</p>
<p>bbb</p>
<p>bbb</p>
</div>
<div class="ccc">
<p>ccc</p>
<p>ccc</p>
</div>
</div>
</body>
</html>
<img src="https://img-blog.csdn.net/20160507162305058?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
.main {
display: table;
background: pink;
margin: 0 auto;
border: 5px solid black;
}
.aaa {
width: 200px;
display: table-cell;
background: red;
}
.bbb {
background: green;
width: 200px;
display: table-cell;
margin: 0 10px;
}
.ccc {
background: blue;
width: 200px;
display: table-cell;
}
</style>
</head>
<body>
<div class="main">
<div class="aaa">
<p>aaa</p>
</div>
<div class="bbb">
<p>bbb</p>
<p>bbb</p>
<p>bbb</p>
<p>bbb</p>
<p>bbb</p>
<p>bbb</p>
</div>
<div class="ccc">
<p>ccc</p>
<p>ccc</p>
</div>
</div>
</body>
</html>
转载出处:http://www.cnblogs.com/xiaohuochai/p/5457127.html
前面的话
等高布局是指子元素在父元素中高度相等的布局方式。等高布局的实现包括伪等高和真等高,伪等高只是看上去等高而已,真等高是实实在在的等高。本文将介绍边框模拟、负margin这两种伪等高以及table实现、absolute实现、flex实现和js判断这四种真等高布局
伪等高
边框模拟
因为元素边框和元素高度始终是相同高度,用元素的边框颜色来伪装左右两个兄弟元素的背景色。然后将左右两个透明背景的元素使用absolute覆盖在中间元素的左右边框上,实现视觉上的等高效果
[注意]左右两侧元素的内容高度不能大于中间元素内容高度,否则无法撑开容器高度
<style> body,p{ margin: 0;} .parent{ position: relative; } .center{ box-sizing:border-box; padding: 0 20px; background-clip: content-box; border-left: 210px solid lightblue; border-right: 310px solid lightgreen; } .left{ position: absolute; top: 0; left: 0; width: 200px; } .right{ position: absolute; top: 0; right: 0; width: 300px; } </style>
<div class="parent" style="background-color: lightgrey;"> <div class="left"> <p>left</p> </div> <div class="center" style="background-color: pink;"> <p>center</p> <p>center</p> </div> <div class="right"> <p>right</p> </div> </div>