作用 首先要解释一下:无论是圣杯圣杯布局还是双飞翼布局,都是布局布局为了实现一个效果:左右固定宽度,中间部分自适应。和双欢那两者的飞翼区别在于,圣杯布局给中间的更喜个布 div 设置 padding-left 和 padding-right;而双飞翼布局则在中间的 div 内部创建子 div 放置内容,并在该 div 里用 margin-left 和 margin-right 留出左右宽度。圣杯 HTML 结构如此: CSS 样式如此: body { min-width: 700px; } header,布局布局 footer { background: grey; border: 1px solid #333; text-align: center; } .left, .middle, .right { position: relative; float: left; min-height: 130px; } .container { padding: 0 220px 0 200px; overflow: hidden; } .middle { width: 100%; background: red; } .left { margin-left: -100%; left: -200px; width: 200px; background: green; } .right { margin-left: -220px; right: -220px; width: 220px; background: blue } footer { clear: both; 效果如此: 圣杯布局 代码说明: 有人说“双飞翼布局是玉伯大大提出来的,始于淘宝UED”,其效果和圣杯布局一样,只是它把三栏布局比作一只鸟,中间内容部分分为三部分,左翅膀、中间、右翅膀。其技术关键在于它还有一层 div。 HTML 结构如此: CSS 结构如此: body { min-width: 700px; } header, footer { background: grey; border: 1px solid #333; text-align: center; } .left, .right, .main { float: left; min-height: 130px; } .main { width: 100%; background: red; } .main-inner { margin: 0 220px 0 200px; min-height: 130px; } .left { margin-left: -100%; width: 200px; background: green; } .right { margin-left: -220px; width: 220px; background: blue } footer { clear: both; 效果如圣杯布局一致,不重复展示,云服务器它代码的关键在于先构建中间部分展示出,再通过 margin-left 完成浮动流。 以前的布局难点就是三栏布局,而且三栏布局还能引出 BFC,BFC 的作用之一就是自适应布局。而现在 flex: 1就能解决自适应布局的问题,所以这类考题已经不多见了。 以前一直担心考这类破问题,因为完全没准备过。除了一次考左边固定宽,右边自适应外,就没考过 CSS 布局方面的问题,大概是因为已经过时了。 三栏布局两种解决方法: 相同点:浮动 、margin-left 线上demo: