在 HTML 形式中,斜体“(必填)”应该得到 <i>、<em> 还是 <span class="italic">?

In a HTML form, should an italicized "(required)" get <i>, <em> or <span class="italic">?

为了迎合屏幕阅读器和语义正确,在 HTML 形式中显示斜体 "required" 或 "optional" 标签的正确方法是什么?

  1. <i>*required</i>
  2. <em>*required</em>
  3. <span class="italic">*required</span>

*<span class="italic"> 等同于 CSS

中的 font-style="italic"

<i> 表示 "italic",用于引号和外来词(例如拉丁语和法语表达)。例如:

I had a deja vu.

<em>表示"emphasis",表示强调一个词。示例:

The food was really good!

用哪一个由你决定。在你的情况下,我建议 <em>.

说实话没关系。重要的是输入本身的 HTML5 required 属性。

来源:https://www.w3.org/wiki/HTML5_form_additions#required

可以说,<em><i> 在语义上都不正确。您的问题已经假定您希望文本在视觉上是斜体,而不是您希望它被强调或识别为外文、船名等。

也就是说,中性元素可能是您的最佳选择,例如 <span>,以避免在 none 处赋予语义。此外,如果您使用 <em><i>.

,屏幕 reader 将不会以任何不同方式宣布文本

您可以更进一步,完全跳过添加元素并使用 CSS 为您添加内容(前提是您只支持一种语言 and/or 有一个简单的方法 CSS 每种语言):

input[required] + label::after,
textarea[required] + label::after {
  content: " (required)"
}

或反过来:

input:not([required]) + label::after,
textarea:not([required]) + label::after {
  content: " (optional)"
}

屏幕 readers 宣布 CSS 生成的内容,以防您担心这可能是个问题。