[翻译]寻找圣杯 In Search of the Holy Grail(5)

作者:abdvl 来源:Alipay UED 时间:2008-11-12 13:10:00 

等高栏

这个布局能保证所有的栏目都是等高的,实现方式是来着与One True Layout的adapted wholesale。所以我不详细解释,增加和修改代码如下


#container { 
  overflow: hidden; 

#container .column { 
  padding-bottom: 20010px;  /* X + padding-bottom */ 
  margin-bottom: -20000px;  /* X */ 

#footer { 
  position: relative; 
}

我特别在下面留了10个像素

附加的说明,请注意在Opera上存在一个bug,即overflow:hidden会让你所有的栏目都变大,在One True Layout上有详细的解决办法。你可以使用这个方法或是等Opera 9(被修复了这个bug)来测试。

另一个问题是,在IE中如果内容的高度没有背景图片的高度高,背景不会被剪掉,他会超出footer。如果你没有独立的footer或是内容比背景高,这也不是个问题。如果你仍然需要一个footer,不要怕还是有解决的办法的。用一个DIV把footer封装一下就可以。


<div id="footer-wrapper"> 
  <div id="footer"></div> 
</div>

现在依然用上面我们使用到的让各个栏目对齐的技巧来让footer超过封装的DIV,来显示我们想要显示的内容


* html body { 
  overflow: hidden; 

* html #footer-wrapper { 
  float: left; 
  position: relative; 
  width: 100%; 
  padding-bottom: 10010px; 
  margin-bottom: -10000px; 
  background: #fff;         /* Same as body  
                               background */ 
}

现在解决了所有的问题,得到了我们想要的结果和很少量冗余的代码。

哦,还需要说明的

完美主义者有可能是想知道是否有一个更好的方式来做到这一点?我之前声明过,我引用了一个非语义化的包含容器(DIV),确实,我们不应该包含一个额外的结构来打乱我们完美的结构.

如果你像我一样,象知道这样怎么去实现,不需要更多的结构,我向你介绍”wrapper-free Holy Grail (没有包含的圣杯)”,其最抽象的特殊之处在于,用一个DIV实现了各部分 — 不多也不少,语义化,不愧于”圣杯”的美名.其原理是相似的.主体直接应用padding不需要多余的容器,而用负边距来延伸header和footer 使其刚好达到想要的宽度.

这种布局能在所有的浏览器上正常工作,甚至(令人震惊)是在IE上,但是不是等高的.而且在非常小的窗口中是会”破掉”的,使用他的时候一定要谨慎.

最后

虽然文中提到的例子很具体,但是这项技术的使用范围确实很大.为什么不能有两个活动的中心层,为什么不调换层的顺序.这些引用都超出了本文的表述范围,但是要实现他们只需要很小的改动即可.使用圣杯是明智的.他可以成为你使用CSS的技巧之一.

标签:三栏,圣杯,负边距,css
0
投稿

猜你喜欢

  • 使用DW中遇到的常见问题详解

    2008-03-18 16:27:00
  • 如何使用图片精灵优化你的网站

    2009-07-21 11:35:00
  • [CSS+JS]同一页面可以重复使用的选项卡

    2009-02-12 12:53:00
  • js捕捉窗口的关闭与刷新

    2008-10-08 10:20:00
  • asp中记录集对象的getrows和getstring用法分析

    2012-11-30 20:09:49
  • SQL Server中索引使用及维护

    2008-11-25 11:13:00
  • 能否推荐一个论坛用的数据库结构?

    2009-11-01 18:09:00
  • superLink,让伪链接更有可用性

    2009-06-02 12:35:00
  • 在Linux下安装Oracle

    2010-07-30 12:46:00
  • 使用VS2005调试ASP程序方法

    2007-11-02 09:56:00
  • asp如何验证日期输入是否正确?

    2010-06-10 18:38:00
  • 介绍27款经典的CSS框架

    2011-03-04 16:24:00
  • SQL语句练习实例之五 WMS系统中的关于LIFO或FIFO的问题分析

    2011-11-03 16:59:59
  • MySQL常用维护管理工具

    2009-03-08 16:51:00
  • H1标签的定义

    2008-07-29 12:43:00
  • 渗透和改变 非洲web 2.0网站Logo

    2008-01-22 13:31:00
  • DW MX 的快键一览表

    2009-07-21 12:47:00
  • Asp包含文件include动态包含方法(含变量)

    2010-01-14 20:12:00
  • AJAX缓存的问题解决办法

    2009-04-26 14:47:00
  • javascript 跨浏览器的事件系统

    2010-07-28 19:34:00
  • asp之家 网络编程 m.aspxhome.com