你认为在HTML中哪些标签是没用的?

4
随着我们转向HTML5,有一些标签现在的重要性已经不如过去。例如<dl>定义列表,我不记得上一次使用这个标签是什么时候了。
不仅如此,还有一些标签存在更好、更高效的版本或者只是明显的冗余,例如<strong><b><basefont><font>等等。
作为开发人员,你认为哪些标签可以被忽略,因为我们有了更好的版本?

2
只需看一下这个列表:http://www.html-5.com/avoid/ - James Black
@James Black,那是一个很好的链接,也许把它作为答案会更好。 - Starx
只是出于好奇,如果您不使用<strong>和<em>,您在想要加粗或斜体文本时会使用什么?<strong>和<em>不会将呈现强制到页面描述中,因为它们不是固有的视觉元素,而是描述性的(用于屏幕阅读器等)。 - mjschultz
@mjschultz,我不依赖HTML标签来实现字体效果,我更倾向于使用CSS来处理这种事情。 - Starx
询问意见是关闭SO的理由。所以...投票关闭。 - slebetman
显示剩余5条评论
6个回答

5

BSTRONG不是同一件事,IEM也不是。

EM表示应该强调文本。这就表明了文本应该如何被解释,屏幕阅读器(文字转语音)等都能理解它的逻辑含义。而I则仅仅告诉HTML渲染器将文本呈现为斜体,并没有关于语义的信息。因此,在文本中进行强调时,请使用EM。如果您需要在某些情况下将一小段文本以斜体呈现,而又不意味着这段文本应该被强调,那么可以使用I

STRONGB的情况也是如此。

然而,我真的不喜欢FONT,因为它没有提供任何关于语义的信息。对于标题,请使用Hn,对于强调,请使用EM,对于代码,请使用CODE等。如果您在某些情境中缺少某些标签,请定义一个CSS规则。

  <p class="footer">...</p>

或者

  <p>This is <strong class="extraordinaryEmphasis">extremely</strong> important.</p>

3
建议我把这个作为答案,以下是一个优秀的页面,讨论了在HTML5页面中应该避免使用哪些标签和属性,以及为什么,尽管他没有包括像blink标签这样的元素。

http://www.html-5.com/avoid/


至少在一个方面,它已经过时了。在HTML5中,accesskey属性并未被弃用。(http://dev.w3.org/html5/spec/elements.html#global-attributes) - Alohci
我认为他正在使用XHTML 2,该版本已经弃用了accesskey,但是HTML5仍然支持它。此外,该页面是一个很好的列表示例。无论如何,我更关注应该避免使用哪些元素,因为这些元素有助于推动我在页面上实现我的愿景。 - James Black

1

现在,STRONG和B具有不同的语义含义。花费了很多精力来清理这样的语义模糊的元素。甚至HR也得到了一些关注。

我个人经常使用DL。它是我的工作马匹KeyValuePair类型。有时候,我希望它有更严格的语义,但其他时候,我感谢它在允许我在上下文中定义其语义方面的灵活性。

我想这取决于你对“无用”的定义,我认为它意味着“完全没有实际用途”。我真的不知道HTML5中有任何元素在任何情况下都不会使用。


-1

<code>是无用的。除非你是Perl一行代码的粉丝。它本应该是创建<pre>块的语义方式-那将会很有用。

<embed>是无用的。它与<object>重复,而且比<object>功能更弱。

<small>是无用的。它没有语义意义,应该使用CSS来实现。

这些是我认为最无用的三个标签,它们被纳入了HTML5规范。


同意当前的“embed”,因为它的名称让人觉得它应该能够嵌入任何东西,包括页脚/页眉/导航栏的常见HTML片段,但它仅限于媒体,而video标签则可以取代它。现在,如果“embed”也可以嵌入.html片段(就像iframe一样,但是内联在DOM中),那么它将非常有用于网站组合,而不需要客户端JS或服务器端构建框架。 - Dwayne Robinson

-1
P 标签应该弃用。不是开玩笑。它在连续文本中创建人为换行,可以更好地使用换行符进行复制。打字机上有 P 标签吗?接下来的问题是,它变成了一个“文本容器”,我们出于无关紧要的原因而依赖它。段落仅是一种样式流程标记。最多应该是一个单例标签。
在 CSS 中,我只将其用作文本区域容器,这与 SPAN 类似,但其形式为块。P 应该真正成为可以承载多个 span 的 TEXTSPAN 标签,但不可是自己的父级。我们经常被迫在数据库中存储 P 的某些表示形式,然后这些表示形式是无法重建以进行显示的。再次说明,双倍行距更具吸引力和通用性。 :-)

1
它不会创建人为的换行,它只会按照预期的方式创建段落。请查看此链接http://webdesign.about.com/od/htmltags/a/aabg092299a.htm,了解何时应该使用<p>标签而不是换行符。 - Starx
@Starx。谢谢,我喜欢这场辩论。我应该重新陈述而不带戏剧效果。P标签作为单例或简单的内联指定会更有意义。问题在于它暗示了可以理解为两个连续换行符而不会打破内联流的东西。它在布局中提供的唯一价值(如果有的话)是作为浮动图像/框架的锚点/边界,即使那也是人为的和结构性的。 - Arcadian
但是难道像 <p> 或者 <div> 这样的块标签不是应该做这件事吗? - Starx
嗯,是的和不是的。问题在于<p>现在有两个角色,一个是块分隔符,一个是文本分隔符。这就产生了混淆。在许多文本处理中,并不需要使用P标签:单行内容、推文、评论、单词或片段。那么作为文本分隔符你会使用什么呢?Span标签吗?Span标签用于样式化文本内的文本。缺少的是一个<text>分隔符/标签。然后,在这个分隔符内,如果需要,可以使用<p>来定义一个“段落”。在这种情况下,<p>不需要是块级元素,而是内联元素,并且仍然可以是单例的。 - Arcadian

-2

我认为任何指示应该在CSS中完成的事情都应该避免。这包括:

<b>,<strong>
<i>,<em>
<center>
<u>,<strike>

我最不喜欢的标签是<font>,因为它完全没有意义,在所有情况下都应该用<span>标签替换。

个人认为,最好避免使用应该用CSS完成的HTML属性,例如“color”和“border”。


2
+1 对于“任何指示应在CSS中完成的内容”,-1 对于strong和em,因为它们不完全是呈现性的。 - BoltClock
1
它们根本不是表现性的。像大多数人一样,发帖者不知道EM和STRONG等标签具有语义意义。许多现代浏览器对这些标签应用表现效果,除非被CSS覆盖,但这并不意味着它们本身是表现性的。 - user164226

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接