为什么<nobr>已弃用?

vbe*_*nar 41 html

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

我想弃用意味着有更好的东西,但我没有看到造型比单独的标签更好.当然,有些地方应该使用CSS.我错过了什么吗?

Que*_*tin 45

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

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

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

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

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

  • @artuska - 是的,您可以:http://jsbin.com/legamedaxe/1/edit?html,css,output (2认同)
  • @ Quentin - 好吧,99.99%的地球人在他们的键盘上使用简单的破折号,他们不知道任何关于字体和非打破的东西:)而且,我不确定所有字体都有这种类型的爆炸. (2认同)
  • 值得注意的是,虽然 Quentin 说 `nobr` *“未弃用”*,但 WhatWG 和 W3 HTML 规范都将其列在了他们的 *“过时功能”* 部分(请参阅 https://html.spec.whatwg。 org/multipage/obsolete.html#nobr) 并声明它*“作者不得使用”*。我想这不是程序员通常使用的意义上的“弃用”(其中“弃用”功能是正式建议您不要使用但*仍然保证有效*的功能),但它*是*弃用在这个词在简单的英语和除编程之外的所有领域使用的意义上。 (2认同)

Ada*_*atz 13

您可以随意使用过时 /非标准的<nobr>HTML标记 - 只要您在CSS中定义它.

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

⚠  自定义元素(包括过时的元素)将使您的代码无法验证为HTML.

您的CSS需要如下所示:

nobr  {  white-space: nowrap;  hyphens: none;  }
Run Code Online (Sandbox Code Playgroud)

你可能想要也可能不想要(或需要)这个hyphens: none;部分,但是为了完整性我添加了它,因为看起来某些实现<nobr>(用于?)也会抑制连字符white-space: nowrap;而不会这样做.

这定义了white-spaceas nowrap,它抑制了空格和hyphensas中的换行符none,从而防止了单词内的断裂(包括忽略"建议断行点"的单词中的字符).


Dav*_*ton 7

愚蠢。这是唯一的原因。

<nobr>被普遍支持,因为它需要传达这样一个事实,即封闭的内容在语义上是一个单一的单元,所以它不应该分成多行。

  • `&lt;span&gt;` 的目的是提供一种方法来引用一段文本*而不*暗示语义,例如指定*样式*(表示)。`&lt;span&gt;` 和 `&lt;div&gt;` 不传达*语义* 信息(尽管在 html5 中我们有 `&lt;article&gt;` 等)。` ` 在某些特定情况下很方便,但它不是通用的解决方案,原因如下: 1. 因为没有 `&amp;nbyhphen;`(有 `‑` 但这显然很糟糕);2. 对用户输入的文字不起作用;3. 它有不受欢迎的副作用,例如,它巧妙地改变了复制/粘贴的内容。 (6认同)
  • URL 是永远不应该被破坏的实体的一个常见示例,因为将其分解为多个部分也会在功能上破坏它。被分成几部分的 URL 将不再有效。这是语义上的变化,而不仅仅是语法或风格的变化。另一个例子是在不忽略换行符的系统中的密码。如果“abc/def”不等于“abc/&lt;br&gt;def”,那么您必须防止字符串被分成几部分。这是语义要求,而不仅仅是风格问题。 (2认同)