圣杯布局和双飞翼布局是前端工程师需要日常掌握的重要布局方式。两者的功能相同,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局。
作用
圣杯布局和双飞翼布局解决的问题是相同的,就是两边顶宽,中间自适应的三栏布局,中间栏要在放在文档流前面以优先渲染。
区别
圣杯布局:为了让中间div内容不被遮挡,将中间div设置了左右padding-left和padding-right后,将左右两个div用相对布局position: relative并分别配合right和left属性,以便左右两栏div移动后不遮挡中间div。
双飞翼布局:为了让中间div内容不被遮挡,直接在中间div内部创建子div用于放置内容,在该div里用margin-left和margin-right为左右两栏div留出位置。
代码示例
圣杯布局
优点:不需要添加dom节点
缺点:圣杯布局的缺点:正常情况下是没有问题的,但是部分情况下会出现页面变形的问题
html
1 |
|
圣杯布局总结:用父盒子的padding将中间栏挤到中间,并腾出地方给两边栏
双飞翼
优点:不会像圣杯布局那样变形
缺点是:多加了一层dom节点
html
1 |
|
双飞翼总结:中间的div外层用另一个div包裹了一下,然后利用 margin来把嵌套的div“挤”到中间
使用其他方法实现中间栏div内容不被遮挡
除了圣杯布局和双飞翼布局,我们还可以用别的方式实现同样的效果
方案一
使用box-sizing:boder-box
html
1 |
|
方案二
利用flex
html
1 |
|