其实圣杯布局和双飞翼布局实现的都是三栏布局,两边的盒子宽度固定,中间盒子自适应,也就是我们常说的固比固布局。它们实现的效果都是一样的,差别在于其实现的思想。

一、圣杯布局

html代码中,将重要的内容middle放在container的最前面,然后是left、right

1、将三者均设置

float:left

2、将middle的宽度设置为

width:100%;

使得middle占满一行

3、将left放在middle所在行的最左边,给left设置

margin-left:-100%;

4、left覆盖了middle内容的最左端,此时给container设置

padding:0 100px;

5、将left填充container最左边的空白部分,为left设置

position:relative;
left:-100px;

6、同理先给right设置

margin-left:-100px;

7、然后给right添加

position:relative;
right:-100px;

实现圣杯布局的代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>圣杯布局</title>
<meta name="description" content="">
<meta name="keywords" content="">
<style>
html,body{
margin:0;
padding:0;
}
.container{
border:1px solid;
padding:0 100px;
width:500px;
}
.container:after{
content:'';
display: block;
clear:both;
height: 0;
}
.main{
width:100%;
height:300px;
background-color: red;
float:left;
}
.aside{
width:100px;
height:100px;
background:blue;
float:left;
position: relative;
left:-100px;
margin-left:-100%;
}
.extra{
width:100px;
height:100px;
float:left;
background:yellow;
position: relative;
left:100px;
margin-left:-100px;
}
</style>
</head>
<body>
<div class="container">
<div class="middle"></div>
<div class="left"></div>
<div class="right"></div>
</div>
</body>
</html>

二、双飞翼布局

双飞翼布局与圣杯布局不同的是,在中间重要的内容块里面再嵌套了一个div用于放内容,然后设置该div的margin,来达到三栏式的效果。

1、将三者均设置

float:left

2、将middle的宽度设置为

width:100%;

使得middle占满一行

3、将left放在middle所在行的最左边,给left设置

margin-left:-100%;

4、将right放到middle所在行的最右变,给right设置

margin-left:-100px;

5、middle的一部分给left和right覆盖了,给middle中添加

<div class="wrap"></div>

6、然后设置wrap

margin:0 110px;

双飞翼的代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>双飞翼布局</title>
<meta name="description" content="">
<meta name="keywords" content="">
<style>
html,body{
margin:0;
padding:0;
}
.container{
border:1px solid;
width:500px;
}
.container:after{
content:'';
display: block;
clear:both;
height: 0;
}
.middle{
width:100%;
height:300px;
float:left;
}
.middle .wrap{
background:pink;
height:300px;
margin-left: 100px;
margin-right: 100px;
}
.left{
width:100px;
height:100px;
background:blue;
float:left;
margin-left:-100%;
}
.right{
width:100px;
height:100px;
float:left;
background:yellow;
margin-left:-100px;
}
</style>
</head>
<body>
<div class="container">
<div class="middle">
<div class="wrap"></div>
</div>
<div class="left"></div>
<div class="right"></div>
</div>
</body>
</html>

三、两个布局的异同

  • 1.两种布局方式都是把主列放在文档流最前面,使主列优先加载;
  • 2.两者在实现上的相同点在于都让三列浮动,然后通过负外边距形成三列布局;
  • 3.两种布局方式的不同在于如何处理中间主列的位置:圣杯布局是利用父容器的左右内边距定位;双飞翼布局是把主列嵌套在div后利用主列的左右外边距定位。

最新文章

  1. Debian8安装Vim8
  2. CSS3幻灯片制作心得
  3. svg转化成canvas以便生成base64位的图片
  4. HttpURLConnection 下载文件
  5. cocos2dx-3.x 导出自定义类到 lua 过程详解
  6. Html5新标签解释及用法
  7. C# 使用TimeSpan计算两个时间差
  8. [转]WinForm如何调用Web Service
  9. 开发移动端web的一些知识
  10. int_float_double数据类型的存储格式。
  11. 前端数据统计用做Bootstrap的一些柱状图、饼状图和折线图案例
  12. CentOS7安装WDCP3
  13. Jmeter(六)_前置处理器
  14. TestNG entryset的用法及遍历map的用法
  15. 《连载 | 物联网框架ServerSuperIO教程》- 16.集成OPC Server,及使用步骤。附:3.3 发布与版本更新说明。
  16. HBASE强制删除表
  17. 框架源码系列十:Spring AOP(AOP的核心概念回顾、Spring中AOP的用法、Spring AOP 源码学习)
  18. sap 申请 新系统用户
  19. extjs使用笔记-21
  20. 证明LDU分解的唯一性

热门文章

  1. 利用纯JS和HTML Canvas生成随机迷宫过程中产生的有趣的事情
  2. TopJUI Combobox onSelect 事件失效BUG
  3. 写 5 个你知道的 HTML5 标签,说明他们的意义
  4. OpenWrt-Git依赖报错
  5. 收藏Linux命令
  6. 浅谈JVM编译原理-&gt;.java文件转变为.class文件的过程
  7. 如何将M文件转成独立可执行程序
  8. Oracle入门第五天(下)——数据库其他对象
  9. 20155217 2016-2017-2 《Java程序设计》第3周学习总结
  10. 20155330 实验二 Java面向对象程序设计