这里以左右两侧固定宽度300px
,中间部分随浏览器宽度自适应变化为例,总结三栏布局的方法。
基本 HTML
:
1 | <body> |
自身浮动法
1 | html,body { |
这个方法最简单,左侧 float:left
,右侧 float:right
,中间主体实现自适应。不过就是 HTML
布局要将主体部分放在最后,左右栏随意布置。但是中间主体存在克星,clear:both
属性,如果要使用此方法,需避免明显的clear样式。
绝对定位法
1 | html { |
这个方法是左右两栏通过绝对定位固定在页面两侧,然后为中间的主体栏添加左右 margin
值撑开。这里左中右三栏的 HTML
布局顺序任意。缺点是如果左右两栏盒子高度大于中间盒子,因为绝对定位的关系,会撑不起父盒子的高度,造成高度塌陷。
Flex 布局法
1 | html { |
Flex 方法也是简单好用的,不过还是因为兼容性的问题只适应现代浏览器。这里给右侧盒子添加 order:1
属性可以将它排在最后,否则根据上面 HTML
布局顺序,会出现在中间。然后给中间栏设置 flex:1
属性让他占满剩余的空间。
margin
负值法(双飞翼布局)
这个 HTML
代码和上面的方法有些不同。
1 | <body> |
1 | html,body { |
这个方法 HTML
布局顺序比较讲究,中间栏排第一,剩下左右两栏就比较随意。中间栏要用双层标签,外层宽度与浏览器相同,且浮动,内层设置 margin:0 300px
预留出左右两栏的位置。然后左右两栏设置浮动并通过 margin
负值定位,左栏 margin-left: -100%
刚好将它定位到页面最左侧,右栏 margin-left: -300px
则将它向左位移它本身的宽度定位到页面右侧。