工做的越久,有些基础知识咱们可能就逐渐淡忘了,今天咱们来回顾一下css的圣杯布局和双飞翼布局,css
这两个名词你可能不熟, 那三栏布局你确定就很是熟悉了,布局
就是两边定宽, 中间自适应 的 布局 spa
1 , 圣杯布局 code
<!--三栏布局--> <header>三栏布局</header> <div class="container"> <div class="center column">center</div> <div class="left column">left</div> <div class="right column">right</div> </div> <footer>footer</footer>
首先HTML结构是这样的,由于要保证中间的结构先渲染, 因此 center 要放在 最前面 。blog
*{ margin: 0; padding: 0; } body{ min-width: 700px; } header , footer{ background-color: antiquewhite; text-align: center; } footer{ clear: both; } .container{ height: 200px; } .container .column{ float: left; position: relative; height: 100%; } .center{ width: 100%; background-color: tomato; } .left{ width: 200px; background-color: aqua; } .right{ width: 200px; background-color: chartreuse; }
先让它们浮动, 并给left 和 right 一个 固定 宽度, center宽度100%,it
footer清除浮动流, 结果变成上面这样 。io
而后咱们要把 left 和 right 放上去 class
先把left 放上去 :基础
.left{ width: 200px; background-color: aqua; margin-left: -100%; }
加上 一个 margin-left 为 负的本身的宽度 , 变成了这样:渲染
咱们能够看到 center的文字被 left 盖住了 , 因此给container加一个padding
.container{ height: 200px; padding: 0 200px; }
变成了这样:
因为加了padding, 内容区域变小, left 也跟过来了, 因此要给left设置一个left:
.left{ width: 200px; background-color: aqua; margin-left: -100%; left: -200px; }
这样left 就到最左边了, center文字也出来了, 同理right
.right{ width: 200px; background-color: chartreuse; margin-left: -100%; right: -100%; }
最终效果:
2 双飞翼布局(始于淘宝的UED)
和圣杯布局差很少, 不一样之处在于它们处理中间部分被两边盖住的方法不一样
双飞翼布局给center加了一个inner center ,而不是在最外层加container
HTML:
<header>双飞翼布局</header>
<div class="center column">
<div class="inner-center">
center
</div>
</div>
<div class="left column">left</div>
<div class="right column">right</div>
<footer>footer</footer>
而后 给 inner-center 加margin (只列出关键代码) :
.center .inner-center{ margin-left: 200px; margin-right: 200px; height: 100%; background-color: tomato; } .left{ width: 200px; background-color: aqua; margin-left: -100%; } .right{ width: 200px; background-color: chartreuse; margin-left: -200px; }
最终效果和圣杯布局同样。。。。。。