三列布局
三列布局的特征是两侧两列固定宽度,中间列自适应宽度。
1.margin + float
原理说明:设置两个侧栏分别向左向右浮动,中间列的宽度根据浏览器窗口自适应。对中间面板设置左右外边距,margin-left的值为左侧栏的宽度,margin-right的值为右侧栏的宽度。
DOM文档
1 | <div id="left"></div> |
CSS样式
1 | #left{ |
==注意==:DOM文档的书写顺序,先写两侧栏,再写中间主面板,更换后则侧栏会被挤到下一列
2.position + margin
原理说明:通过绝对定位将两个侧栏固定,中间列自适应。对中间面板设置左右外边距,margin-left的值为左侧栏的宽度,margin-right的值为右侧栏的宽度
CSS样式
1 | body{ |
两列布局
原理和上面三列布局一样,去掉一个侧栏
1.margin + float
DOM文档
1 |
|
CSS样式
1 | #left{ |
2.position + margin
CSS样式
1 | body{ |
圣杯布局
左右两栏固定宽度,中间部分自适应
步骤:
- 三者都设置向左浮动
- 设置中间主面板宽度为100%,设置两侧栏的宽度。
- 设置 负边距,左侧的设置负左边距为100%,右侧的设置负左边距为负的自身宽度。
- 设置父级的padding值给左右两栏留出空间。
- 设置两个左右两侧为相对定位,左侧的left值为负的左侧的宽度,右侧的right值为负的右侧宽度。
DOM文档
1 | <div id="content"> |
CSS样式
1 | .main{ |
==注意==:DOM元素的书写顺序不得更改
双飞翼布局
原理说明:双飞翼布局和圣杯布局的思想有些相似,都利用了浮动和负边距,但双飞翼布局在圣杯布局上做了改进,在main元素上加了一层div, 并设置margin,由于两侧栏的负边距都是相对于main-wrap而言,main的margin值变化便不会影响两个侧栏,因此省掉了对两侧栏设置相对布局的步骤。
步骤:
- 三者都设置向左浮动。
- 设置main-wrap宽度为100%,设置两个侧栏的宽度。
- 设置 负边距,left设置负左边距为100%,right设置负左边距为负的自身宽度。
- 设置main的margin值给左右两个子面板留出空间。
DOM文档
1 | <div id="main-wrap"> |
CSS样式
1 | #main-wrap{ |
待续