将<label>用于非输入/非交互元素是一种好习惯吗?

Ala*_*rda 14 html label input

标记没有交互性的非输入元素(例如预览)时<img>,是否更好(或更正)使用<span>而不是<label>

例如:

<span>Image preview:</span>
<img id="preview">
Run Code Online (Sandbox Code Playgroud)

或这个:

<label for="preview">Image preview:</label>
<img id="preview">
Run Code Online (Sandbox Code Playgroud)

Dar*_*ows 17

<label>标记定义为一个标签<input>元件.

所以请<span>改用.

for属性将标签与控件元素相关联,如HTML 4.01规范中标签的描述中所定义.除其他事项外,这意味着当标签元素接收焦点(例如通过被点击)时,它将焦点转移到其关联的控件上.标签和控件之间的关联也可以由基于语音的用户代理使用,这可以在处理控件时向用户提供询问相关标签是什么的方式.(该关联可能不像在视觉渲染中那么明显.

HTML规范并不强制要求将标签与控件相关联,但Web内容可访问性指南(WCAG)2.0也是如此.这在技术文档H44中描述:使用标签元素将文本标签与表单控件相关联,这也解释了隐式关联(通过嵌套,例如在标签内输入)不像通过for和id属性的显式关联那样得到广泛支持,

  • https://html.spec.whatwg.org/multipage/forms.html#the-label-element “‘label’元素表示用户界面中的标题。标题*可以*与特定的表单控件关联,称为“label”元素的**标记控件**,可以使用“for”属性,或将表单控件放入“label”元素本身。除非以下规则另有规定,否则标签元素没有标记为控制。” (4认同)
  • &gt; “HTML 规范并未强制要求将标签与控件关联起来,但 Web 内容可访问性指南 (WCAG) 2.0 却强制要求。” 在我看来,该链接文档主要是说*当您有一个表单控件*时,它也应该始终具有一个关联的标签,但它没有提到任何关于具有“&lt;label&gt;”元素而没有关联的表单控件的相反情况因此反之亦然并不是自动需要的。表单控件需要标签并不意味着标签总是需要表单控件。 (3认同)
  • 语义标记怎么样?在屏幕上提供文本(没有关联的控件)时,使用跨度如何比使用标签元素更好。我同意这里的一些评论,规范表明标签可以通过 for 属性与输入关联,但我不认为这意味着标签必须具有关联的输入控件。希望 WAVE 也有同样的看法。他们的规则的书写方式给我们带来了各种各样的悲伤。 (3认同)

zco*_*p98 12

<label>使用元素作为非输入标签的标题是完全可以接受的。

\n

HTML 生活标准

\n

根据labelHTML Living Standard 的元素部分label元素可以选择与表单控件关联,但这不是必需的。

\n
\n

label元素表示用户界面中的标题。标题可以与特定的表单控件(称为label元素的标记控件)相关联,可以使用for属性,也可以将表单控件放入元素label本身内。

\n

除非以下规则另有规定,否则label元素没有标记的 control

\n
\n

请特别注意,除了说明标题“可以与...表单控件关联”(而不是“必须”)之外,文档还明确指出:

\n
\n

除非以下规则另有规定,否则元素label没有[与标题关联的特定表单控件]。

\n
\n

仅当该元素打算与或不与关联输入一起使用时,这似乎才有意义。鉴于label\ 的语义含义是有意义的,作为内容的标题 \xe2\x80\x93 不仅仅是输入可以拥有并受益于标题。

\n

WCAG H44 异议

\n

指示元素label只能在inputs 上使用的来源经常引用 WCAG 2+'s 输入有标签的要求,以及WCAG 技术 H44:使用标签元素将文本标签与表单控件关联,它提供了一个满足以下要求的示例模式:规格

\n

这不是对labelelements使用的强制要求,这样解释是一种误读。

\n

WCAG 本身在其“关于技术”页面上指出,这些技术是非规范的

\n
\n

不需要技术

\n

技术内容丰富\xe2\x80\x94,这意味着它们不是必需的。确定是否符合 WCAG 2.1 的基础是 WCAG 2.1 标准的成功标准\xe2\x80\x94,而不是技术。

\n
\n

H44 技术的目标是满足或帮助满足与以下相关的 4 个 WCAG 2+ 成功标准:

\n\n

最终,上述技术和标准旨在帮助可访问性\xe2\x80\x93,而不是规定label元素仅用于用户输入。

\n


gav*_*rif 5

我知道这是旧的并且已被回答和接受 - 我的解决方案与其中一个评论(@Quentin)相同 - 但为了提高意识和教育代码使用语义正确的元素 -图形和相关的figcaption是此处描述的工作的最佳工具。

这是文档的链接,所有浏览器 ( https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figure )都完全支持 Fugure 元素作为 html5 元素。

图形元素的所有部分都可以设置样式 - 并且 figcaption 可以是图形元素的第一个子元素或最后一个子元素( - 将其放置在图像之前或之后)

figure {
  text-align: center;
}

figcaption {
  margin-bottom: 4px;
  color: blue;
  font-weight: bold
}

figure img {
  border: solid 1px blue;
  border-radius: 8px;
}
Run Code Online (Sandbox Code Playgroud)
<figure>
  <figcaption>Image preview:</figcaption>
  <img id="preview" src="https://i.pinimg.com/originals/3e/6b/cd/3e6bcdc46881f5355163f9783c44a985.jpg" alt="fluffy-kitten" height="100" />
</figure>
Run Code Online (Sandbox Code Playgroud)