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

栅格化布局技术分析——负边距布局

2011年09月03日

负边距布局

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

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

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

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

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

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

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

负边距布局( Negative Margin Layout)

Ryan Brill 在2004写了一篇文章:Creating Liquid Layouts with Negative Margins. 文中的“发现”立刻让布局世界迎来了“负来负去”的新时代。

技术层面:

  • 浮动 float
  • 负边距 negative margin

下面是代码部分:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>negative margin 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;}
.bodyArea:after{ content:"."; display:block; height:0; clear:both; overflow:hidden;}
.main_wrap{ float:left; width:100%; margin-right:-190px; zoom:1;}
.main_wrap:after{ content:"."; display:block; height:0; clear:both; overflow:hidden;}
.main_content{ margin-right:200px;}
.side{ float:left; width:230px;}
.main{ margin-left:240px; _margin-left:237px; margin-right:200px;}
.extra{ float:right; width:190px;}

-->
</style>
</head>
<body>

<div class="bodyArea">
	<div class="main_wrap">
		<div class="side">
			<div class="content_box">side:230px;</div>
		</div>
		<div class="main">
			<div class="content_box">main:510px;</div>
		</div>
	</div>
	
	<div class="extra">
		<div class="content_box">extra:190px;</div>
	</div>
</div>


</body>
</html>

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

这个方法的最大价值是:开启了负边距的神奇大门,让布局的实现思路立刻活跃了起来。

优点:

  1. 确保任何一栏为最高栏时不会出问题。
  2. 实现了内容与布局的分离。
  3. 能再定宽布局和流体布局之间切换
  4. 看起来技术含量高些(说笑…)

缺点:

  1. 多了个标签,代码稍显得复杂
  2. 同样 要运用 css hack 那种 数值的 hack 技术,不好

结语:

可以使用,但是就是有日后的隐患。

  • 评论加载中...

标签云

分类目录

最新留言

  • 评论加载中...

与我联系

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

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