1. 圣杯布局
看,是不是很像一个圣杯,这就圣杯布局的来源啦,这种网页布局很常见呦,每个前端人都应该会哒!
目的
- 两侧内容宽度固定,中间内容宽度自适应
- 三栏布局,中间一栏最先加载、渲染出来(主要内容)
实现方法
float + margin
1.1 HTML框架
<body> <header>头部</header> <div class="center">主区域</div> <div class="left">左区域</div> <div class="right">右区域</div> <footer>底部</footer> </body> 复制代码
注意:因为主区域的内容需要优先加载,故主区域div标签放在其他div标签的前面。
1.2 CSS部分
首先给每个标签添加颜色和高度
<style> * { margin: 0; padding: 0; } header { text-align: center; line-height: 60px; height: 60px; background-color: #ffb3a7; } .center { text-align: center; line-height: 60px; height: 60px; background-color: #ff2121; } .left { text-align: center; line-height: 60px; height: 60px; background-color: #a1afc9; } .right { text-align: center; line-height: 60px; height: 60px; background-color: #00bc12; } footer { text-align: center; line-height: 60px; height: 60px; background-color: #ffb3a7; } </style> 复制代码
先看看网页效果
接下来我们需要让主区域,左区域和右区域在一行显示,怎么做呢?
添加浮动
.center, .left, .right { float: left; } 复制代码
我们发现底部也跑上来凑热闹了,这是因为浮动产生了塌陷,怎么做呢?
清除浮动
第一步,用一个标签包裹主区域,左区域和右区域标签
第二步,添加清除浮动代码
.clearfix::after { content: ""; display: block; clear: both } 复制代码
看看效果如何
好啦,现在底部div标签已经在正常的位置了。
接下来需要让主区域div标签在中间显示,怎么做呢?
.clearfix { padding: 0 100px;// 内边距必须要加 } .left { width: 100px; margin-left: -100%;// 这里-100%是重点 } .right { width: 100px; margin-left: -100px; } .center { width: 100%; } 复制代码
看一下效果
貌似达到效果了,但其实不然,我们这里的左区域和右区域是覆盖在主区域上的,因此我们需要在左区域和右区域上加定位!
好啦,大功告成!看看效果!
2. 双飞翼布局
接下来就是双飞翼布局,其实双飞翼布局和圣杯布局是同一种布局,只是所有实现的方法不同而已
2.1 HTML框架
<header>头部</header> <div class="wrapper"> <div class="center">主区域</div> </div> <div class="left">左区域</div> <div class="right">右区域</div> <footer>底部</footer> 复制代码
和圣杯布局不同的地方在于我们的主区域必须用一个标签包裹
2.2 CSS部分
首先给每个标签添加颜色和高度
* { margin: 0; padding: 0; } header { text-align: center; line-height: 60px; height: 60px; background-color: #ff7500; } footer { text-align: center; line-height: 60px; height: 60px; background-color: #ff7500; } .center { text-align: center; line-height: 60px; height: 60px; background-color: #ff2121; } .left { text-align: center; line-height: 60px; height: 60px; background-color: #a1afc9; } .right { text-align: center; line-height: 60px; height: 60px; background-color: #00bc12; } </style> 复制代码
先看看网页效果
添加浮动,给谁加?
给.wrapper,.left,.right 加,然后给footer标签清除浮动
接下来很重要的步骤来了给.wrapper标签设置宽度为100%,给.center标签外边距
margin
看一下效果
后面的步骤so easy的啦,和圣杯布局一样
.left { margin-left: -100%; } .right { margin-left: -100px; } 复制代码
大功告成,看看效果!
总结:
- 相比较而言圣杯布局的HTML结构更直观一点
- 圣杯布局需要用到相对定位,双飞翼布局无需定位
- 圣杯布局代码量相对来说多一些,但是在只需要一个标签包裹的情况下,圣杯布局清除浮动的方法多一些,副作用会少一些。