三栏布局一般指的是页面中一共有三栏, 左右两栏宽度固定,中间自适应的布局 ,三栏布局的具体实现:
利用浮动和负边距来实现。父级元素设置左右的 padding,三列均设置向左浮动,中间一列放在最前面,宽度设置为父级元素的宽度,因此后面两列都被挤到了下一行,通过设置 margin 负值将其移动到上一行,再利用相对定位,定位到两边。
实现方式:左右元素浮动,中间元素左右marign值撑开两边距离。
例:
此时看似没有问题,可是如果中间内容过多,超出左右两边高度,我们将看到 文字环绕 问题,如下如所示。
解决办法:
补充flex左右布局,左边固定,右边自适应,并且两列等高自适应
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
html, body { height: 100%margin: 0padding: 0}
.wrap { width: 100%height: 100%}
.fixed { float: leftwidth: 200pxheight: 100% background: #000margin-left: -100%}
.main { float: leftwidth: 100%height: 100%}
.main-inner { margin-left: 200px background: #f00height: 100%}
</style>
</head>
<body>
<div class="wrap">
<div class="main">
<div class="main-inner">
test
</div>
</div>
<div class="fixed">a</div>
</div>
</body>
</html>
-------
html和body的高度设置为100%, 这样才能让div#wrap的高度生效.
若要将左侧高度固定,将.fixed的height设置为固定值就行了.