博主信息
博文 15
粉丝 0
评论 0
访问量 12341
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
网站布局之双飞翼布局和圣杯布局实例解析
的博客
原创
1177人浏览过

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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学