【问题标题】:Can you use an <aside> element inside a <section role="main"> element?你可以在 <section role="main"> 元素中使用 <aside> 元素吗?
【发布时间】:2015-10-29 20:21:58
【问题描述】:

我正在使用 HTML5 和 WAI-ARIA 改进我的 HTML 的可访问性。

以下设置可以吗?

<!-- main content -->
<section id="main" role="main">
    <h1>The main content</h1>

    <!-- This div needs to be here for styling reasons -->
    <div class="the-content">    
         <p>All the text that goes with the main content</p>
    </div>

    <!-- the sidebar -->
    <aside id="sidebar" role="complementary">
        <h2>A title</h2>
        <p>Some text</p>
    <aside>
</section>

我不确定是否应该将&lt;aside&gt; 元素放在&lt;section&gt;role="main" 容器之外。这有关系吗?

【问题讨论】:

  • 这个问题的标题具有误导性。这意味着您正在询问是否将 &lt;aside&gt; 元素放入 &lt;main&gt; 元素中,而您拥有的代码是 &lt;aside&gt; 在父 &lt;section&gt; 内的代码
  • 我已经更新了标题,感谢发现。

标签: html accessibility wai-aria


【解决方案1】:

确实很重要。放置位置取决于aside 标记中的内容与主要section 的关系。

例如:

如果aside中的内容与主文相关,则应在main section内。但是,如果sidebar aside tag 中的内容与main 不同,我会将其放在main section 之外

http://html5doctor.com/aside-revisited/

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/aside

【讨论】:

    【解决方案2】:

    是的,&lt;section&gt; 中的 &lt;aside&gt; 是完全有效的标记,并且将通过 W3C 验证,如果您担心的话。

    &lt;section&gt; 元素 allows flow content inside 可能包括 &lt;aside&gt; 元素 - 但是,如果您仅将部分用于样式目的,则可能应该使用 div。

    除此之外(双关语)我怀疑role=main 部分是否有效 - according to this&lt;section&gt; 元素上允许的唯一角色属性值如下所示:

    默认 ARIA 语义:

    role=region.

    可以使用哪些其他 ARIA 角色、状态和属性?

    alert, alertdialog, application, contentinfo, dialog, document, log, marqueesearchstatus

    任何全局aria-* 属性和任何适用于的 aria-* 属性 允许的角色。

    其中明显不包括main 角色。

    【讨论】:

      【解决方案3】:

      规范(editor's draft 已经包含main)不允许将main 元素嵌套在articleasidefooterheadernav 中,但是它没有说明将这些元素嵌套在main 中。它还提供了两个在main 中使用articlenav(文档内导航)的示例。因此,至少aside,嵌套在articlesection 中(因此限定在其级别),也应该被允许。我也可以想象这样的情况,其中包含一些补充信息的部分内容(如 WCAG Wiki 中的aside usage examples)可能会形成页面的主要内容,所以我认为禁止它是不合理的.

      另一方面,轮廓算法(现在看来是所有sectioning content存在的主要原因,包括aside)仍然标记为as being 'at risk',因此这些元素的定义可能会发生变化和可能会添加一些说明。

      也许我们应该向 HTML5 规范编辑器提出这个问题?

      【讨论】:

        【解决方案4】:

        我会同意 Darren 的观点,即您将标签放在哪里。另外,你的标签有点古怪。各种标签本身都有 WAI-ARIA 角色,虽然是的,你可以覆盖原生角色,但你为什么要这样呢? Paciello Group 博客上的 post about WAI-ARIA 对此进行了更多讨论。例如:

        而不是使用

        <section id="main" role="main">
        

        您可以只使用&lt;main&gt;,这意味着同样的事情,并且是更好的做法。 &lt;aside&gt; 标签具有原生添加的互补角色,所以就像说我的名字是 Ryan,真的我的名字 is Ryan

        【讨论】:

        • 我听说在 HTML5 元素中添加角色以获得最大兼容性是明智的,这是真的吗?
        • 我听到这个论点的唯一一个是&lt;nav&gt;。在进一步发表评论之前,我需要查看这些来源。
        • 巧合的是,我刚刚阅读了 Bruce Lawson 的一篇关于
          元素的文章,他提到他仍然明确地为 nav 和 main 等元素添加了角色:brucelawson.co.uk/2014/should-you-use-html5-header-and-footer/…
        • 实际上
          不一样,因为 sencond 不是分段元素,如果您关心文档大纲(和你应该)!
        猜你喜欢
        • 2015-07-03
        • 1970-01-01
        • 2021-12-09
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 2018-09-19
        • 2019-05-20
        相关资源
        最近更新 更多