【发布时间】:2009-02-18 12:38:40
【问题描述】:
由于 CSS 图像替换技术,我的代码中有很多空的 span 标签等。 它们会触发 HTML 验证警告。
我应该关心吗?
【问题讨论】:
标签: html validation
由于 CSS 图像替换技术,我的代码中有很多空的 span 标签等。 它们会触发 HTML 验证警告。
我应该关心吗?
【问题讨论】:
标签: html validation
我同意@Gumbo 的观点,但是有很多没有任何区别的警告可能会隐藏您确实需要注意的警告。如果你可以在 span 中放置一些东西来消除警告但不会破坏你的 UI,你至少应该考虑这样做。
【讨论】:
我已将验证作为工作流程的一部分,因为它可以帮助我及早发现错误。虽然我不认为空元素是一个问题,但如果我每次都必须在精神上解析一个警告列表并决定一个警告是否重要,它就会否定使用验证器的一些价值。所以我尽量保持我的页面没有错误和警告,以便快速浏览HTML Validator icon in the Firefox status bar 只有在真正出现问题时才会改变。为此,我通过插入空注释来保持空元素“非空”。
<span><!-- --></span>
(至少对 Tidy 验证器有效。)
现在,话虽如此,我认为这对于许多情况来说根本没有必要。完全合理地认为,为了避免验证器警告而在代码中添加八个额外字符是荒谬的。但它对我有用。
【讨论】:
<span>&nbsp;</span>
您应该考虑页面的行为,例如屏幕阅读器。通常在标签中实际放置几个描述图像的词,然后通过图像替换隐藏。
查看CSS Zen Garden,您可以在其中看到诸如 H1 spans 之类的示例,其中文本在 CSS 中被图像替换。
这不仅会提高您网站的可访问性,还会提高搜索能力。
【讨论】:
“空”标签在 HTML 中有一个非常具体的定义:
<span/>
对
<span></span>
HTML 4.0 Strict DTD 不允许前者,因此应由验证器标记。唯一可以使用前一种语法的标签是那些在 DTD 中明确标识为“EMPTY”的标签(例如,<br>)。
第二种形式是有效的 HTML,不会被 W3C validator 标记。
所以我不得不假设 (1) 你的验证器坏了,或者 (2) 你错误地使用了标签。
【讨论】:
警告不是错误。这只是提醒你应该改进一些东西。
【讨论】:
我想如果带宽是一个问题,可以重新访问那些空标签,看看你是否可以让它们不再出现。
【讨论】:
Eric Meyer 还说 empy 标签在语义上很糟糕。
警告并不意味着它是错误的,而是说它可以或有时应该更好。
同理
if("value"==variable)
优于
if(variable=="value")
【讨论】: