基于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
投稿

猜你喜欢

  • Python使用for实现无限循环的多种方式汇总

    2023-04-30 15:15:11
  • 举例详解Python中smtplib模块处理电子邮件的使用

    2023-10-08 04:46:14
  • GoLang并发编程中条件变量sync.Cond的使用

    2024-04-25 15:28:40
  • 使用Python去除字符串中某个字符的多种实现方式比较

    2023-07-15 00:45:13
  • django实现图片上传数据库并显示

    2024-01-13 08:52:24
  • 在Vue中实现添加全局store

    2024-05-03 15:12:38
  • 用Python中的__slots__缓存资源以节省内存开销的方法

    2021-06-21 10:33:40
  • SQL Server和MySql中创建临时表

    2008-06-19 13:31:00
  • springboot配置文件抽离 git管理统 配置中心详解

    2021-05-24 08:17:18
  • Python dict的常用方法示例代码

    2023-05-17 09:58:15
  • javascript实现rgb颜色转换成16进制格式

    2024-04-18 09:33:58
  • 详解python中groupby函数通俗易懂

    2023-03-08 12:27:36
  • 人脸检测实战终极之OpenCV+Python实现人脸对齐

    2023-10-01 02:03:07
  • Websocket通信协议在数字孪生中的应用

    2024-04-30 08:55:46
  • 互联网产品设计师职业生涯

    2009-04-20 20:41:00
  • PHP Session变量不能传送到下一页的解决方法

    2023-11-15 01:41:29
  • 各种SQL语句速查手册

    2007-09-27 19:31:00
  • Python 循环语句之 while,for语句详解

    2024-01-01 02:20:50
  • PHP的mysqli_stat()函数讲解

    2023-06-12 08:11:33
  • Python中字符串类型代码的执行函数——eval()、exec()和compile()详解

    2022-07-08 09:14:12
  • asp之家 网络编程 m.aspxhome.com