CSS三栏布局的四种方法

总括: 无论是三栏布局仍是两栏布局都是咱们在平时项目里常常使用的,也许你不知道什么事三栏布局什么是两栏布局但实际已经在用,或许你知道三栏布局的一种或两种方法,但实际操做中也只会依赖那某一种方法,本文具体的介绍了三栏布局的四种方法,并介绍了它的使用场景。

所谓三栏布局就是指页面分为左中右三部分而后对中间一部分作自适应的一种布局方式。css

1.绝对定位法

HTML代码以下:html

<div class="left">Left</div> <div class="main">Main</div> <div class="right">Right</div> 

CSS代码以下:浏览器

//简单的进行CSS reset body,html{ height:100%; padding: 0px; margin:0px; } //左右绝对定位 .left,.right{ position: absolute; top:0px; background: red; height:100%; } .left{ left:0; width:100px; } .right{ right:0px; width:200px; } //中间使用margin空出左右元素所占据的空间 .main{ margin:0px 200px 0px 100px; height:100%; background: blue; } 

该方法有个明显的缺点,就是若是中间栏含有最小宽度限制,或是含有宽度的内部元素,当浏览器宽度小到必定程度,会发生层重叠的状况。布局

2. 圣杯布局

HTML代码以下:spa

//注意元素次序
<div class="main">Main</div>
<div class="left">Left</div>
<div class="right">Right</div>

CSS代码以下:code

//习惯性的CSS reset body,html{ height:100%; padding: 0; margin: 0 } //父元素body空出左右栏位 body { padding-left: 100px; padding-right: 200px; } //左边元素更改 .left { background: red; width: 100px; float: left; margin-left: -100%; position: relative; left: -100px; height: 100%; } //中间部分 .main { background: blue; width: 100%; height: 100%; float: left; } //右边元素定义 .right { background: red; width: 200px; height: 100%; float: left; margin-left: -200px; position: relative; right: -200px; } 

相关解释以下:htm

  • (1)中间部分须要根据浏览器宽度的变化而变化,因此要用100%,这里设左中右向左浮动,由于中间100%,左层和右层根本没有位置上去
  • (2)把左层margin负100后,发现left上去了,由于负到出窗口没位置了,只能往上挪
  • (3)按第二步这个方法,能够得出它只要挪动窗口宽度那么宽就能到最左边了,利用负边距,把左右栏定位
  • (4)但因为左右栏遮挡住了中间部分,因而采用相对定位方法,各自相对于本身把本身挪出去,获得最终结果

3. 双飞翼布局

HTML代码以下:it

<div class="main"> <div class="inner"> Main </div> </div> <div class="left">Left</div> <div class="right">Right</div> 

CSS代码以下:io

//CSS reset body,html { height:100%; padding: 0; margin: 0 } body { /*padding-left:100px;*/ /*padding-right:200px;*/ } .left { background: red; width: 100px; float: left; margin-left: -100%; height: 100%; /*position: relative;*/ /*left:-100px;*/ } .main { background: blue; width: 100%; float: left; height: 100%; } .right { background: red; width: 200px; float: left; margin-left: -200px; height: 100%; /*position:relative;*/ /*right:-200px;*/ } //新增inner元素 .inner { margin-left: 100px; margin-right: 200px; } 

圣杯布局实际看起来是复杂的后期维护性也不是很高,在淘宝UED的探讨下,出来了一种新的布局方式就是双飞翼布局,代码如上。增长多一个div就能够不用相对布局了,只用到了浮动和负边距。和圣杯布局差别的地方已经被注释。class

4. 浮动

HTML代码以下:

//注意元素次序
<div class="left">Left</div> <div class="right">Right</div> <div class="main">Main</div> 

CSS代码以下:

//CSS reset body,html { height:100%; padding: 0; margin: 0 } //左栏左浮动 .left { background: red; width: 100px; float: left; height: 100%; } //中间自适应 .main { background: blue; height: 100%; margin:0px 200px 0px 100px; } //右栏右浮动 .right { background: red; width: 200px; float: right; height: 100%; } 

这种方式代码足够简洁与高效,也容易理解

相关文章
相关标签/搜索