博客列表 >网站布局之双飞翼布局和圣杯布局实例解析

网站布局之双飞翼布局和圣杯布局实例解析

的博客
的博客原创
2018年03月28日 17:43:05871浏览

1、双飞翼布局

听说双飞翼布局是玉伯大大提出来的,始于淘宝UED

如果把三栏布局比作一只大鸟,可以把con看成是鸟的身体,left和right则是鸟的翅膀。这个布局的实现思路是,先把最重要的身体部分放好,然后再将翅膀移动到适当的地方.

实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>双飞翼布局</title>
</head>
<body>
<style type="text/css">
    body{background-color: #a5a5a5;color: #fff;}
	.head, .foot { width: 100%;  height: 50px;background-color: #4169E1;}
	.nav { width: 1200px; min-height: 100%;background-color: #0000CD;margin: auto;text-align: center;line-height: 50px;}
	.main {width: 1200px;margin:auto;overflow: hidden;background-color: #A5A5A5;}
	.con {width: 100%;float: left;}
	.center {min-height:850px;margin: 0 310px 0 210px;background-color: #F0F8FF;}
	.left {width: 200px;min-height:850px;float:left;margin-left:-100%;background-color: #9932CC;}
	.right {width: 300px;min-height:850px;float:left;margin-left:-300px;background-color:#B22222;
	}
	.foot{clear: both;}
	</style>


    <div class="head"><div class="nav">网站导航</div></div>
	<div class="main">
		<div class="con"><div class="center">主体</div></div>
		<div class="left">左侧</div>
		<div class="right">右侧</div>
	</div>
	<div class="foot"><div class="nav">网站底部</div></div>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

1111.png



实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>圣杯布局</title>
	<style type="text/css">
	.head, .foot {width: 100%;height: 50px;background-color: #4169E1;}
	.nav { width: 1200px; min-height: 100%;background-color: #0000CD;margin: auto;text-align: center;line-height: 50px;}
	.main {width: 700px;background-color: #A5A5A5;margin:auto;overflow: hidden;  padding:0 300px 0 200px;}
	.main .center {min-height: 700px;width: 100%;float:left;background-color: #F0F8FF; }
	.main .left {width: 200px;min-height: 700px;float:left;margin-left: -100%;position: relative; left: -200px; background-color: #9932CC }
    .main .right {width: 300px;min-height: 700px;float:left;margin-left:-300px;position: relative;right:-300px;background-color: #B22222;}
	.foot {clear: both;}
	</style>
</head>
<body>
<div class="head">
	<div class="nav">网站头部</div>
</div>
<div class="main">
	<div class="center">主体</div>
	<div class="left">左侧</div>
	<div class="right">右侧</div>
</div>
<div class="foot">
	<div class="nav">网站底部</div>
</div>

运行实例 »

点击 "运行实例" 按钮查看在线实例

圣杯布局的基本思路与实现步骤:
-------------------------

1.DOM结构的特点:
1.1: 必须一个父级容器container
1.2内部的三列,主体main必须在最前面,确保优先渲染,其次是left和right
---------------------------------------------------------------------

2.区块宽度和高度的特点:
2.1: main+left+right = 总宽度
2.2: 父区块container宽度 = main宽度
2.3: 宜先设置container宽度,如600px,main的width:100%即可;
2.4: 因为暂时无内容填充,需要设置一个最小高度min-height才可以看到效果,例如650px;
---------------------------------------------------------------------

3.三个区块必须全部左浮动:
3.1: 因为main区块占据了100%宽度,后面的left和right必须要被换行显示
3.2: left,right都是浮动元素,所以按浮动的顺序显示,left在前right在后
--------------------------------------------------------------------

4.将浮动区块left和right上移到main区块的指定位置
4.1: 通过给left和right设置负的左外边距margin-left来实现浮动区块的反向移动;
4.2: left必须跨越整个main区块才可以到达定位的起点: margin-left:-100%;
4.3: right区块是在右边显示,所以只要跨过自己的宽度就可以: margin-left:200px;
---------------------------------------------------------------------------

5. 给container添加内边距,进行挤压完成布局,这也是圣杯布局的精妙之处
5.1: 添加左右内边距padding,宽度等于left和right
5.2: 添加的左右边距其实就是后面的left和right的实际位置
---------------------------------------------------------------------------------

5. 将main区块的内容完整的显示出来
5.1: left和right占据了main区块的位置,覆盖掉了main区块的部分内容
5.2: 可以对left和right进行相对定位,让他们把占据的main空间的位置腾出来
5.3: 那么问题来了? left和right都是浮动元素,都是脱离了当前文档流的,可以使用相对定位吗?
5.4: 答案是肯定的,为什么呢? 相对定位的原则是:相对该元素原来的位置进行重新定位,元素处于文档流中只是一种
特殊情况,浮动元素可以看作处在一个特殊的由浮动元素组成的一个文档流中,是另一个世界.
5.5. 那么相对移动多少呢? 只要移动它们自身的宽度就可以了:
left: relative; left: -200px;(距离左边-200px)反向移动
right: relative; right: -200px;(距离右边-200px)反向移动


1111.png

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议