圣杯布局格式要求:
1、三列布局,中间宽度自适应,两边定宽;
2、中间栏要在浏览器中优先展示渲染;
3、允许任意列的高度最高;
4、要求只用一个额外的DIV标签;
5、要求用最简单的CSS、最少的HACK语句;
传统方式实现的圣杯布局
|
|
将主体main部分写在最前面可以使页面的核心部分优先渲染,这样做的好处就是用户可以首先看到页面的最核心部分的内容,考虑到了用户体验。
1. 设置基本样式:
|
|
设置完成之后效果是这样的:
2. 主体的三个子元素设置向左浮动:
|
|
此时是这样的:
我们看一下上面的效果比较明显的两个问题,一是footer跑到上面去了,二是container容器高度塌陷了,这是典型的“清除浮动和闭合浮动”问题。
3. 解决浮动问题:
给footer添加清除浮动,使其左右不允许出现浮动元素。
给container添加
|
|
此时的效果:
4. 设置main宽度为100%:
|
|
5. 使left模块和right模块占据合适的位置:
|
|
负的margin-left会让元素沿文档流向左移动,如果负的数值比较大就会一直移动到上一行。
6. 关于覆盖问题:
首先给container的左右加上一个内边距,分别为left和right的宽度。
把left和right分别移动到这两个留白就可以了。可以使用相对定位移动left和right部分。
至此,我们就实现了圣杯布局:
传统方式实现的圣杯布局代码很多,步骤稍显复杂,而且我们了解了flex布局之后考虑到使用flex实现圣杯布局。
Flex布局实现圣杯布局
|
|
效果:
在实现圣杯布局过程中产生了浮动元素设置clear:both失效的疑问,所以在segmentFault上提问如下,也有人解答了:
关于浮动元素设置clear:both失效问题