欢迎来到 jackNEss'窝窝
I like simple mind

栅格化布局技术分析——双飞翼布局

2011年09月03日

双飞翼布局

在我们日常的项目中,web designer 们都按照着网页栅格化来进行设计页面,然后交给我们前端进行页面制作等,

基于栅格化布局,仔细分析各种方法的技术实现,可以发现下面三种技术被经常使用:

  • 浮动 float
  • 负边距 negative margin
  • 相对定位 relative position

这是实现布局的三个最基本的技术层面。只要巧妙运用,就能“拼”出各种布局的实现方案。

在选用布局的时候应该考虑的因数有:

  • 实现了内容与布局的分离,即Eric提到的Any-Order Columns.
  • 确保任何一栏为最高栏时不会出问题。
  • 良好的兼容性。
  • 易于修改。
  • 重要的内容放前面(书写HTML文档有个非常重要的原则)。

下面我就以三栏布局为例对我了解到的几种布局进行分析:

双飞翼布局(Flying Swing Layout)

玉伯 提出的一种布局。也是本文中所推荐的布局方式。

技术层面:

  • 浮动 float
  • 负边距 negative margin


以下是代码部分:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>Flying Swing Layout</title>
<style type="text/css">
<!--
*{ margin:0; padding:01;}
.content_box{
	height:50px;
	padding:10px;
	background:#e1e1e1;
	border:1px dotted #ccc;
}
.bodyArea{ background:#f0f0f0;}

/*-- 关键部分代码 --*/
.bodyArea{ width:950px; margin:50px auto; zoom:1;}
.body_wrap{ zoom:1;}
.body_wrap:after{ content:"."; display:block; height:0; clear:both; overflow:hidden;}
.main{ float:left; width:100%;}
.main_content{ margin-left:240px; margin-right:200px;}
.side{ float:left; width:230px; margin-left:-100%;}
.extra{ float:left;  width:190px; margin-left:-190px;}
.clear{ display:block; height:0; clear:both; overflow:hidden;}
-->
</style>
</head>
<body>
<div class="bodyArea">
	<div class="body_wrap">
		<div class="main">
			<div class="main_content">
				<div class="content_box">main:510px;</div>
			</div>
		</div>
		<div class="side">
			<div class="content_box">side:230px;</div>
		</div>
		
		<div class="extra">
			<div class="content_box">extra:190px;</div>
		</div>
	</div>
</div>
</body>
</html>

演示地址:http://www.jackness.org/lab/2011/grid_layout/example_flying_swing_layout.html

优点:

  1. 实现了内容与布局的分离,即Eric提到的Any-Order Columns。
  2. main部分是自适应宽度的,很容易在定宽布局和流体布局中切换。
  3. 何一栏都可以是最高栏,不会出问题。
  4. 需要的hack非常少(就一个针对ie6的清除浮动hack:_zoom: 1;)
  5. 在浏览器上的兼容性非常好,IE5.5以上都支持。

不足:

  1. main需要添加一个额外的包裹层。

结语:

现阶段各种布局之中最好的布局(没有之一),推荐使用

分类HTML + CSS
阅读 2,412
  • 评论加载中...

标签云

分类目录

最新留言

  • 评论加载中...

与我联系

如有疑问or建议可通过以下方式跟我取得联系.

Q Q:373435871
Email:jackness1208@gmail.com
© Copyright 2011 - 2014 jackNEss.org All Rights Reserved 粤ICP备14065612号
首页 | 关于我 | 网站地图 | RSS