用于确认,错误和警告消息的语义HTML

Sni*_*fer 8 html html5 semantic-markup error-messaging

对于确认,错误和警告消息,人们对语义HTML的看法是什么?

目前我有一些简单的东西:

<div class="message message-warning">
     <h3>Message Title</h3>
     <p>Message text</p>
</div>
Run Code Online (Sandbox Code Playgroud)

由此message-warning类得到由取代message-confirmation或者message-error如果该消息是不同的类型.

是否有更多语义方式来标记它?

jol*_*olt 11

我可以建议<figure>吗?

摘自HTML5 Doctor(以及他们,来自W3C):

图元素表示内容单元,可选地带有标题,是自包含的,通常从文档的主流中引用为单个单元,并且可以远离文档的主流而没有影响文件的含义.

让我们先回答问题:

  • 这样的对话是一个单元吗?
  • 这样的对话是自成一体的吗?
  • 可以在不影响文档含义的情况下将这样的对话移开文档吗?

是的,它<figure>非常适合.

而且,<figcaption>对标题栏/标题特别有用.

所以,我<figure>甚至没有试图进一步观察:

<figure id="dialog-box" class="warning">
    <figcaption>Message Title</figcaption>
    <p>Message text</p>
</figure>
Run Code Online (Sandbox Code Playgroud)


Tig*_*igt 8

新的答案:使用<dialog>元素,并调用.show()而不是.showModal(),或给它的open,如果渲染服务器端属性.

只要它没有以模态显示,它就不会阻止与其他页面内容的交互.


旧答案(以前<dialog>是一件事):

警报是ARIA添加到HTML中的语义之一,因为在"纯"HTML中没有直接的方法.因此:

<aside role="alert">
  <h2>Message Title<h2>
  <p>Message Text</p>
</aside>
Run Code Online (Sandbox Code Playgroud)

我个人喜欢使用它<aside>作为打击role它的元素- 它在技术上不是页面内容的一部分,正如Jeff Lindblom的回答所描述的那样.

拥有一个"语义"CSS选择器很容易:

[role="alert"] {
  font-size: 2em; /* or what have you */
}
Run Code Online (Sandbox Code Playgroud)

  • “aside” 元素上不允许使用“alert” 角色。请参阅[在 HTML 中使用 ARIA 属性的文档一致性要求](https://www.w3.org/TR/html-aria/#docconformance)。并且“dialog”需要“alertdialog”的角色来指示警告或错误消息。但如果消息的目的是短暂的——自行宣布并且不需要交互——那么“对话”可能不是最好的选择;相反,具有“alert”角色的“section”可能是更好的选择(注意:“section”上都允许“alert”和“alertdialog”)。奖励:带有“aria-label”的“section”创建了一个 ARIA 地标。 (2认同)

小智 5

这个<figure>想法很有趣,但我认为它不适合这里。它缺少的是证明使用标签合理的实际内容。根据规范,<figure>表示“内容单位”-表示图像,图表,代码块等,可以选择对此内容加上标题(<figcaption>)。可以说在之外的消息<figcaption>代表内容的适当单位。

<h#>在这种情况下,我们还应谨慎使用标签,因为该消息是次要内容,并且可能不属于文档大纲。

修订后的规范下,人们可能会争辩说一个<aside>适当的选择。现在在之外使用时,它被视为“切向内容” <article>

<strong>因为它是消息中语义上更重要的部分,而不是文档标题,所以它适用于消息的“标题”。因此,代码可能看起来像这样:

<aside class="warning-or-whatever">
    <strong>Message Title</strong>
    <p>Message Text</p>
</aside>
Run Code Online (Sandbox Code Playgroud)

可能还会有人争辩,因为没有专门为此功能创建的东西,所以最好的老式的,语义上毫无意义<div>的元素可能是最好的元素。我想这取决于您对邮件的感觉如何。

谢谢杰夫


Juk*_*ela 4

不。HTML 中没有任何元素表示确认、错误或警告消息。

\n\n

从技术上讲,该samp元素在 HTML 4.01 和 HTML 3.2 中被定义为 \xe2\x80\x9csample 输出,来自程序、脚本等。 \xe2\x80\x9d 在 HTML 4.01 和 HTML 3.2 中,尽管最初在 HTML 2.0 中为 \xe2\x80\x9c 文字序列字符,通常以等宽字体\xe2\x80\x9d 呈现,并在 HTML5 中重新定义为 \xe2\x80\x9c(sample),从程序或计算系统\xe2\x80\x9d 输出。所以它的含义相当模糊,而且它\xe2\x80\x99s用得不多,所以使用它没有真正的意义。samp但有人可能会争论,对来自程序的任何消息使用标记是可以接受的。它是一个文本级元素,因此您需要在h3(any) 内部和内部 (any)单独使用它p,或多或少会破坏结构。

\n\n

也可以说这些消息是来自外部来源的引用,因此它们可以包含在blockquote.

\n\n

与其他一些标记的使用h3实际上并不是一个语义问题,而是一个结构问题:这是第三层嵌套的某些内容的标题吗?

\n