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 联合使用 sup
和 small
效果就很不错。再如,使用 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 结合实际问题,有效地应用到实际中去,这才有发展的动力。