圣杯布局和双飞翼布局都是实现的三栏布局,两边的盒子宽度固定,中间盒子自适应,也就是我们常说的固比固布局。它们实现的效果是一样的,差别在于其实现的思想。
圣杯布局的出现是来自于a list part上的一篇文章In Search of the Holy Grail。比起双飞翼布局,它的起源不是源于对页面的形象表达。在西方,圣杯是表达“渴求之物”的意思。而双飞翼布局,源与淘宝的UED。
整体HTML结构代码如下:
<header><h4>Header内容区</h4></header> <div class="container"> <div class="middle"><h4>中间弹性区</h4></div> <div class="left"><h4>左边栏</h4></div> <div class="right"><h4>右边栏</h4></div> </div> <footer><h4>Footer内容区</h4></footer>
注意:上述代码,父元素的的三栏务必先写中间盒子。因为中间盒子是要被优先渲染,并且设置其自适应,也就是width:100%。
每个盒子的CSS样式如下:
header{
width: 100%;height: 40px;background-color: darkseagreen;} .container{ height:200px;overflow:hidden;} .middle{
width: 100%;height: 200px; background-color: deeppink;float:left;} .left{ width: 200px;height: 200px;background-color: blue;float:left;} .right{
width: 200px;height: 200px;background-color: darkorchid;float:left;} footer{
width: 100%; height: 30px;background-color: darkslategray;}
目前硬性的实现了固比固布局。但中间盒子是自适应的宽度,所以中间盒子里的内容会被左右盒子给压住一部分。比如现在我给中间盒子加很多的内容,大家看看效果图:

利用父级元素设置左右内边距的值,把父级的三个子盒子往中间挤。代码如下:.container{ padding: 0 200px;} 这里的200px是左右盒子的宽度。


圣杯布局终于搞定了,也实现了我们要的效果,左右侧的盒子固定,中间盒子自适应,而且中间盒子的内容完全不受影响。
圣杯布局和双飞翼布局解决的问题是一样的,都是两边定宽,中间自适应的三栏布局,中间栏要在放在文档流前面以优先渲染。
简单说起来就是双飞翼布局比圣杯布局多创建了一个div,但不用相对布局了,少设置几个属性。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231091.html原文链接:https://javaforall.net
