基于display:table的CSS布局

作者:catge 来源:Alipay UED 时间:2008-10-30 10:38:00 

应原书编辑要求,先在文章顶部给出链接:《Everything You Know About CSS Is Wrong》http://www.sitepoint.com/books/csswrong1/

这本书是10月发行的新书,为了避免版权纠纷,如要转载本文请保留以上链接,并遵循该 CC2.5协议

digital-web 的首页上看到一个标题党《Everything You Know About CSS Is Wrong》,被雷过之后仔细看了下原文,发现了一种新的CSS布局思路(其实就是详细介绍了display:table属性)。在IE6仍是王道的时代谈这种技术为时过早,全当是练习英文翻译贴出来给大家分享下,欢迎大家指点不足之处。

—————————以下是中文翻译——————————–

当IE8发布时,它将支持很多新的CSS display属性值,包括与表格相关的属性值:table、table-row和table-cell,它也是最后一款支持这些属性值的主流浏览器。它标志着复杂CSS布局技术的结束,同时也给了HTML表格布局致命一击。最终,使用CSS布局来制作出类似于table布局的栅格将会变得十分迅速和简单。

网页元素应用上那些与表格相关的display属性值后,能够模仿出与表格相同的特性。我将会在该文中给大家演示这种方法给CSS布局带来的巨大影响。

使用CSS表格

CSS表格能够解决所有那些我们在使用绝对定位和浮动定位进行多列布局时所遇到的问题。例如,“display:table;”的CSS声明能够让一个HTML元素和它的子节点像table元素一样。使用基于表格的CSS布局,使我们能够轻松定义一个单元格的边界、背景等样式,而不会产生因为使用了table那样的制表标签所导致的语义化问题。

在深入了解这种方法之前,让我们先来写份HTML文档实例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"> 
  <head> 
    ? HTML head content…
  </head> 
  <body> 
    <div id="wrapper"> 
      <div id="header"></div> 
      <div id="main"> 
        <div id="nav"> 
          ? navigation column content…
        </div>
        <div id="extras">
          ? news headlines column content…
        </div>
        <div id="content">
          ? main article content…
        </div>
      </div>
    </div>
  </body>
</html>

这份HTML源代码满足了内容呈现方面的要求。先是导航栏,然后是附加栏,最后是内容栏。
我们同样需要将以下CSS样式应用上去:

#main { 
  display: table;
  border-collapse: collapse;

 
#nav { 
  display: table-cell;
  width: 180px;
  background-color: #e7dbcd;

 
#extras { 
  display: table-cell;
  width: 180px;
  padding-left: 10px;
  border-right: 1px dotted #d7ad7b;

 
#content { 
  display: table-cell;
  width: 380px;
  padding-left: 10px;
}

这种基于表格的新CSS布局方式能够正确的在IE8、Firefox、Safari和Opera(译者注:包括FF2/FF3/Google都通过了测试)中显示出来。下面这张图片是它在IE8中的样子:

我们轻松实现了三栏等高布局,而无需使用伪造背景图片之类的技巧,更不用担心定位和清除浮动的问题!

标签:布局,表格,display,css
0
投稿

猜你喜欢

  • 自然描述与自然任务

    2010-01-26 15:51:00
  • Oracle AS关键字 提示错误

    2011-04-18 12:42:00
  • asp使用XMLHTTP下载远程数据输出到浏览器

    2007-11-04 10:34:00
  • 基于jQuery的自动完成插件

    2011-02-05 10:55:00
  • MYSQL教程:保证安全的备份MYSQL数据库的方法

    2010-03-03 17:12:00
  • ASP 递归调用 已知节点查找根节点的函数

    2011-03-08 10:48:00
  • PS笔刷,样式,形状、渐变、滤镜载入方式及使用

    2007-10-17 11:47:00
  • 记得使用try+catch

    2010-01-29 12:48:00
  • 利用XMLHTTP无刷新自动实时更新数据

    2008-02-19 18:29:00
  • Oracle 9i轻松取得建表和索引的DDL语句

    2010-07-16 13:09:00
  • 10分钟学会Google Map API (一)

    2009-06-07 18:17:00
  • 网站的视觉路径和版式设计

    2008-04-15 14:35:00
  • SQL查询效率-100w数据查询只要1秒

    2008-08-20 18:25:00
  • css学习笔记: css新闻列表的特殊做法

    2009-07-19 14:25:00
  • excel导入到SQL Sever数据库

    2008-03-25 10:24:00
  • asp网站生成静态页面攻略

    2007-11-04 15:09:00
  • JavaScript 组件之旅(四):测试 JavaScript 组件

    2009-10-13 20:32:00
  • mssql存储过程表名和字段名为变量的实现方法

    2011-12-01 07:59:13
  • SQL Server 2005五个动态管理对象

    2009-02-24 17:41:00
  • 有效防止ASP木马上传运行—小知识[网络安全技术]

    2011-03-06 11:15:00
  • asp之家 网络编程 m.aspxhome.com