如何实现三栏布局,也是前端面试常问的问题了。所谓的三栏布局,一般指的是“左右侧定宽,中间部分自适应”,在这篇文章中,我将分享实现三栏布局的5种方式。
关于两栏布局的实现方式,可访问:两栏布局的实现。
一、前言
假设我们要实现一个页面布局需求,其要求“从左至右,页面可分为3部分,这3部分的高度都为300px
。其中左右侧宽度固定,为200px
宽,中间部分自动充满剩余空间”,你该如何实现呢?
在这里我们假设已经对所有元素设置了:
1 | margin: 0; |
二、布局方式
1.position布局
HTML代码如下:
1 | <!--我们假设容器元素为body元素,实际情况,可自定义一个container --> |
1 | .left, .right { |
2.float + calc 布局
HTML部分不变。
CSS部分:
1 | /* 三者共有样式 */ |
calc
属性,其可以动态计算值,在该例中,其用来计算center
部分的宽度,其为 父元素的宽度(100%
)减去左右侧实际宽度之和(200 + 200
),利用该属性,实现了自适应宽度布局。关于该属性的具体介绍,参看 CSS3的calc()使用。3.flex布局
HTML部分:
1 | <!--我们假设容器元素为body元素,实际情况,可自定义一个container --> |
1 | /* 外层容器设置为 flex 布局 */ |
flex
布局一如既往的灵活与简单。还是那句话,如果不用苦逼的兼容IE9及以下浏览器,愉快的使用flex
布局吧。4.grid布局
HTML代码部分与flex布局一致
CSS部分:
1 | .container { |
5.table布局
HTML与flex布局一致
CSS部分:
1 | .container { |
三、总结
通过上文的分析,咱们可以有5种方式,以实现三栏布局。
- position布局:兼容性好,不过维护和修改困难
- float + calc 布局:必须要IE9以上浏览器才支持,遵循流式布局原理
- flex布局:必须要IE9以上浏览器才支持,不过使用灵活、方便,推荐使用
- grid布局:兼容性相对较差,可作为实验性功能
- table布局:了解即可
四、下载代码
我将每种布局方式写入了单独的HTML文件,可点击此处下载示例代码压缩包。代码下载后,尽量在新版谷歌浏览器中查看效果。
您还有哪些好的布局方式呢?可以在下方留言分享哦!