Bad tags, good use

真・懒写于

原谅我再次使用英文标题 :)。这篇文章首发于CSSer.org,地址是http://www.csser.org/2006/03/bad-tags-good-use/

b, i, tt, sub, sup, big, small, hr这些HTML标签(tag)属于表现性(presentational)标签,在提倡使用结构与表现分离的今天,不推荐使用它们,因为它们的表现效果均可以通过相应的CSS设置来实现。但它们不同于那些如center, u, blink, marquee, font等过时标签,不推荐跟不使用是不一样的。有时,适当使用一下这些表现性标签对我们的结构并没有什么坏处,反而能使我们的结构性代码更优雅。

先简单说一下这些表现性标签的作用,b加粗, i斜体, tt打字机效果, sub下标, sup上标, big加大字体, small减小字体, hr水平线。

在一些特殊场合,它们都可以用的上的,比如商标TM联合使用supsmall效果就很不错。再如,使用hr可以让页面的结构在没有CSS支援的情况下表现得更清晰。当然,你可以说,我都可以通过CSS来实现,没错,如果你适当使用它们,再用CSS加以修饰,你就可以锦上添花,何乐不为?

再者,为了实现某些效果,嵌入一些无意义的标签是十分有必要的。最明显的一个例子,以图代字(参看Using Background-Image to Replace Text),需要加入一个span标签,这时,你是否觉得这个span有点又长又臭?伙计,来个b如何?本身标题(h)就是粗体,加个b并没有什么影响,当然也没有什么结构上的意义,却比span少三个字母,看起来也舒服得多,伙计,谁说b就不能用?

重要的是,在一些不支持CSS的客户端,比如文本浏览器,像手机浏览器,*NIX下的一些运行于终端的浏览器(lynx, links等),它们可以解析这些标签,看起来比使用span更有吸引力。并且,它们并没有易用性/可用性方面的问题,既然它们就是表现性的,亦即无意义的,跟使用span一样,对我们的结构并没有害处。

当然,我并不是提倡滥用它们。我粗粗举几个例子,是想,我们Web Standards中国也需要自己独立的思考,把Web Standards结合实际问题,有效地应用到实际中去,这才有发展的动力。