为何使用表格排版是不明智的[3]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 goaler 的 blog

}

想了解更多?看看 mark newhouse 的文章吧,在 a list apart 的 taming lists,以及在 css-discuss wiki 的 "styling lists"。

当然,css 总会有些事情做得不如表格好。

比如说你有个黑色的导航条,当你希望把它延伸到整个页面那么长的时候。如果用表格,简单得很,给 <td> 一个黑色背景就行了。

没错,我们可以用 css 完成这个,但需要一种不同的思维方式。

如果我们的导航条的 div 一个黑色的背景,那么黑色只会延伸到导航内容结束为止。可在大部分页面中,内容总是比导航条长的,这就不大好看了。

所以我们只好把一个黑色的 gif 图片放在 div 里边,并为 div 给足左侧的 padding,可一旦导航条比内容长的时候,这又不好办了。

另一种“解决”的方式把黑色的 gif 放在 <body> 的背景中 (而内容的 div 中设置别的背景颜色),这个方法本是不错的,可万一你又想把 <body>. 的背景设置成别的颜色,那就完蛋了。

或者我们可以把图片放在一个专门的“包裹” div 里。然而这毕竟又把非语义性的麻烦引入了我们的标记中。

而且当然,在导航条的宽度是变动的时候如果要用小块图片拼成背景,css 肯定无法胜任。

就像我们前面说的,表格总有做得比 css 好的地方。但你总归应该问问自己,表格带来的麻烦是否值得用它带来的那点利益来交换?

从玩弄表格技巧到遵循 web 标准:通盘考虑

首先,你得考虑好一个移植策略。是一口气把整个站点移植了呢,还是逐个逐个部分地一步步完成?

检查一下,找出会因为移植而受益的页面和分支。自然而然地,从首页、新产品通告之类的页面开始检查会比较好。

分析你的站点的内容分别属于下面的哪些类型:

  • 产品信息
  • 价格信息
  • 公司信息
  • 报表
  • 服务信息
  • 投资信息
  • 购物篮
  • 用户论坛
  • 等等

分解你的页面

如果你已经把站点的内容分好了类,那么是时候分析每个页面,把它们按照逻辑关系进行分解了。

  • 主导航条
  • 子导航条
  • 页眉与页脚
  • 内容
  • 相关信息
  • 其他

注意分析由嵌套表格、空白分隔符和边框元素组成的表格结构 (因为我们希望把它们替换为用 div 标记组织的那种简单得多的表格结构)。

看看你的那些标记吧

一旦你分析好页面的结构,就可以着手揭开表象,分析你现在的页面代码中可以转换成结构化标记的那些地方。

  • 作为一个完美主义者,消灭所有的 <font> 标记和间隔 gif 吧!
  • 同样的,一并搞定 <b><br> 标记。
  • 去除表格中的那些外观标记 (bgcolor, background, 等等)。
  • 纯粹用来表示外观的那些 css 调用 (比如 <span class="header">) 改成结构化的标记。 (tantek Çelik 在他的文章 a touch of class 里详细讨论了这方面的内容。)

把描述外观的标记改为描述结构的标记

你可以使用“查找加替换”(或者正则表达式),不过最好的方法还是在浏览器里打开这个页面,然后把文本复制粘贴到你的 html 编辑器里。

关键还是要用结构化的方式来思考!仅仅把 <b> 标记替换为 <strong> 是远远不够的。

最重要的条目是哪个?用 <h1> 来标记它。次要一点的就用 <h2>,依此类推。用 <p> 来标记段落。把导航条标记为无序列表。

选定一个 doctype 来使用。(我们推荐 xhtml transitional,除非你是此道高手,否则别用 xhtml strict。)

把你的页面合理分布在的 div 中

把你的主导航条放在一个 id 属性设为 mainnav 的 div 中,子导航条则放在一个 id 或者 class 是 subnav 的 div 中。而页脚类似这个形式:<div id="footer">,至于整个页面,它被放在 <div id="content"> 里边。

即便现在它还不怎么讨人喜欢,但只要你开始给样式表添加规则,它就会马上变得可爱起来。

是开始自己编写 css 的时候了

首先,给每个 div 设置一个边界。例如: div {border: 1px dotted gray; padding: .5em} 这可以帮助你完完整整地看到里边的内容,也不再需要卷动屏幕了。

首先为以定义的元素编写 css (<html>, <body>, <p>, <h1>, <h2>, <ul>, <li>, 等等。)

尽量运用上下文相关或者有递归下降结构的选择符。这可以使得你的标记更清晰。例如:#subnav li {border: 1px solid black; padding: .5em; display: inline} 将能够只能影响你的子导航栏的 div 中的列表项。

在尽可能多的浏览器下进行测试,毕竟你可以让朋友帮助你用它们自己的浏览器测试。

本文关键:为何使用表格排版是不明智的
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top