为什么<nobr>已弃用?</nobr>

时间:2015-02-15 22:39:15

标签: html

我知道这个标签可以很容易地被<span class="nowrap">和一点点CSS取代,但在现实生活中,我常常发现<nobr>标签更合适。这不是关于风格,而是关于内容。例如<nobr>V. V. Putin</nobr>(俄语排版的姓氏和名字不应该换行,我认为类似的规则适用于其他语言)。

我想弃用意味着有更好的东西,但我看不出造型比单独的标签更好。当然,有些地方应该使用CSS。我想念一下吗?

7 个答案:

答案 0 :(得分:44)

它不被弃用,因为它从一开始就不是标准。

HTML(理论上)是一种语义标记语言。它描述了文档的结构和语义以及与其他资源的关系。

HTML不应该描述演示文稿。在浏览器大战期间添加了一堆表示功能。其中一些变得标准化了。当CSS出现时,大多数人随后都被弃用了。

CSS是一种描述演示文稿的语言。如果你有一大块文本不应该有换行符,那通常是一个介绍问题,所以CSS是正确的做法。

异常通常由不间断的空格(&nbsp;)处理。

答案 1 :(得分:12)

您可以随意使用obsolete /非标准<nobr> HTML标记 - ,只要您在CSS 中定义它。

几乎可以保证,此元素名称永远不会被用于除原始行为之外的任何任务,并且此名称描述了您将在CSS中定义的操作,使人们可以直观地查看您的HTML。

  

⚠ Custom elements(包括过时的元素)会将您的代码fail to validate设为HTML。

您的CSS需要如下所示:

nobr  {  white-space: nowrap;  hyphens: none;  }

您可能会或可能不想要(或需要)hyphens: none;部分,但我已将其添加为完整性,因为看起来某些<nobr>(用于?)的实现也会抑制连字符white-space: nowrap; 1}}不这样做。

这会将white-space定义为nowrap,它会抑制空白区域内的换行符,将hyphens定义为none,这样可以防止在单词内打破(包括< / em>忽略“建议换行符”的单词中的字符。)

答案 2 :(得分:4)

愚蠢。这是唯一的原因。

<nobr>受到普遍支持,因为需要传达所附内容语义单个单元的事实,因此不应将其拆分为多行。

答案 3 :(得分:3)

我在w3c mailing list上发现了这个有趣且非常有说服力的评论:

  

&LT; NOBR&GT;不能被弃用,因为它从未成为过渡性W3C HTML版本的一部分;它纯属专有。

是的。所以从来没有,也永远不会成为规范的一部分。只是缺少某些东西&#39;使用CSS添加。

答案 4 :(得分:2)

实现你想要的正确方法是声明“V. V. Putin”是一个专有名词,并在CSS中定义这样一个专有名词不应该被打破。

<span class="propernoun">V. V. Putin</span>

并在CSS中定义

.propernoun {
  white-space: nowrap;
}

因为... HTML不是关于风格,而是关于内容。基本上,这与OP建议的相同,但class =“nowrap”中的nowrap描述了html中的表示属性,它应该在样式表中。

答案 5 :(得分:0)

这是因为当<nobr>除了样式之外没有任何语义时,正确的标签应该语义有用。我想这就是为什么<center>和类似的样式标签被弃用的原因相同。

答案 6 :(得分:0)

如前所述,由于俄罗斯的印刷术,姓名不得中断:因此, 一些语义。因此,正如您自己说的那样,让我们​​使用有意义的<nobr>..</nobr>标签,而不是通过<person>..</person>格式标记来标记名称。而且,您可以根据需要设置名称的样式,即通过white-space: nowrap;规则为所有页面或仅为俄语本地化。