“已弃用”元素是 W3C 指定为过时的元素。这些元素不应使用,通常被认为是“错误代码”。如果您使用严格的 DOCTYPE,已弃用元素将无法通过验证。
问题是,人们仍然在使用它们。事实上,它们中的许多仍在广泛使用。为什么?因为它们仍然有效!仅仅因为它们已弃用并不意味着它们不起作用,它仅仅意味着有一种“新的”方法可以完成已弃用元素过去所做的事情(嗯……大多数情况下)。这些元素会永远停止工作吗?我无法确定,但我倾向于认为最终会这样。以下是一些您可能经常看到的常见已弃用元素,以及应该使用什么来代替它们。
- align:例如 <p align=”left”>。仍然可以正常工作,但您确实应该只应用一个类,并给该类一个 text-align: left; 的样式。或者,如果您必须这样做,可以应用内联 CSS,例如 style=”text-align: left;”。
- bgcolor:例如 <table bgcolor=”FFF”>。我经常在许多“复制和粘贴”代码生成器中看到这个。它们使用它是因为它们希望完全控制您复制和粘贴内容的外观,而且它确实有效。但说真的,只需应用一个类或使用 style=”background-color: #FFF;”。
- border:例如 <img src=”#” alt=”” border=0 />。这可能是所有已弃用元素中最常见的。图像上的边框在网页上通常看起来很糟糕,并且不应该在没有良好审美理由的情况下设置为默认值。在大多数浏览器中,图像默认情况下没有边框,除非它们用作链接。然后默认情况下使用某种难看的蓝色边框。许多人通过在 img 元素内部添加 border=0 来强制避免这种情况。您可以使用一行 CSS 更轻松、更干净地避免这种情况:a img {border: 0px;}。
- height / width:例如 <div width=150>。不酷,伙计。给那个 div 一个 ID 或类,并将宽度放在它应该在的 CSS 中。
- target:例如
<a href="#" target="_blank">
。它不仅已弃用,而且是使用上的错误。Smashing Magazine 对此有一个很好的引用
访问者希望能够控制他们在浏览器中发生的一切。如果他们想在新窗口中打开链接,他们就会这样做。如果他们不想,他们就不会这样做。如果您的链接在新窗口中打开,您就做出了决定,而这并非您的决定。
注意:
target
在 HTML5 中可以正常使用。 - nowrap:例如 <td nowrap>。这个元素来自表格时代,当时您希望确保一格文本全部保持在一行(不换行)。CSS 已经使用 white-space 属性涵盖了这一点。只需设置 white-space: nowrap; 即可。
有一些已弃用元素可以做到的,而没有替代方案。值得注意的是
- 使用start从一个不为 1 的数字开始有序列表。
- 使用value将特定值应用于列表项。
- 如上所述,Target 没有替代方案。
其中一些可能可以通过 CSS3 解决。但我并不确定。如果您确实需要使用一些已弃用元素,并且仍然希望您的代码能够验证(并正常工作),请确保使用Transitional DOCTYPE。
感谢 Kevin 指出我拼写错误的“deprecated”(我在更新这篇文章之前把它写成了“depreciated”)。
正确术语是“deprecated”。许多人使用不太准确的“depreciated”,就像那些使用“irregardless”的人一样。
来自“万维网联盟 (W3C)”
已弃用
已弃用元素或属性是已被更新的结构取代的元素或属性。已弃用元素在参考手册的适当位置定义,但明确标记为已弃用。已弃用元素可能在未来版本的 HTML 中变得过时。
http://www.w3.org/TR/html4/conform.html
感谢 Kevin。我以前不知道。来自 Wikipedia:“Depreciated 通常被误解或用作“deprecated”的替代词。”
我已经更新了这篇文章。
嗯,我想好的一面是我自己只犯了一个标签的错误。我仍然使用 img border=”0″ 标签。我想我一直没有想过要对它进行样式设置。不过谢谢。
完全同意 110%。但是,在大多数 CMS 中,align=”” 仍然被广泛使用和更受欢迎,包括 WordPress。
你漏了一个“depreciated”……主题是“Target”,它就在 Smashing Magazine 上面。搜索和替换?
不是要挑剔,但你实际上是在报告已弃用的属性,而不是元素。
我真的、真的希望人们停止使用已弃用的东西,尤其是 <font> 标签。
感谢你的提及,Chris。我接手了一个非常过时的网站,一直在清理它。这篇文章帮助我找到了页面上的一些过时属性,并找到了更多需要更新的项目。
我认为,关于边框,你想要表达的意思是
a img {border: 0px;}
但现在写的是
img a {border: 0px;}
传播技术时要小心 :P
@Whack a Hack:是的。这就是我的意思。属性的顺序搞错了,我在文章中修复了它。现在想想,将它列为 img a 甚至是不可能的 =)
谢谢!我一直在四处搜索“border”的替代属性,我终于找到了!你是英雄,哈哈!
在此查看所有已弃用 HTML 属性的完整列表。大约有 47 个。也许我们可以更新此页面?
http://www.w3.org/TR/html4/index/attributes.html