【问题标题】:How to achieve hierarchical heading organization when dynamically creating html?动态创建html时如何实现分层标题组织?
【发布时间】:2013-12-16 21:17:29
【问题描述】:

wcag 2.0 规则之一是标题元素,即 h1/h2/h3/等,应指示文档结构。这意味着你不能跳过一个级别,例如:

<h1>main heading</h1>
...
<h3>subheading</h3>

无效,因为 h1 和 h3 之间没有 h2 元素。这是有效的(根据http://achecker.ca/checker/index.php),即使 h2 在 section 元素内:

<h1>Structure test: h1</h1>
<section>
  <h2>section heading: h2</h2>
</section>
<h3>2nd sub-sub-heading: h3</h3>

以下示例无效,因为最后一个 h3 跟在 h1 后面:

<h1>Structure test: h1</h1>
<h2>sub-heading: h2</h2>
<h3>sub-sub-heading: h3</h3>
<section>
  <h1>section heading: h1</h1>
</section>
<h3>2nd sub-sub-heading: h3</h3>

我正在编写将添加包含标题元素的内容的 javascript,我想知道我应该如何选择我应该使用的标题元素(哪个级别),这样我就不会使文档无效?

【问题讨论】:

    标签: javascript html wcag2.0


    【解决方案1】:

    在 HTML5 中,您可以在 section 元素中使用 h1 元素来定义您的结构:

    <section>
        <h1>Blah</h1>
        <p>Asdf asdf...</p>
        <section>
            <h1>Bleh</h1>
            <p>Asdf again...</p>
        </section>
    </section>
    <section>
        <h1>Another header</h1>
        <p>Qwerty...</p>
    </section>
    

    对其应用样式更难(因为您需要依赖类或一堆 section&gt;section&gt;h1 CSS 选择器),但我认为这是解决问题的最简单方法。

    【讨论】:

    • 不起作用。即使我将最后一个示例包含在部分标记中,它也不会验证。
    • 我不知道那个验证器的算法是什么,也许它太旧了?我知道的唯一最新的 HTML5 验证器是 html5.validator.nu 而且,如果您想确保代码可访问,您应该在真实软件上尝试。顺便说一句,现在我记得,至于规范,拥有像

      这样的东西是完全有效的.
    • 我认为 html5.validator.nu 是一个 html 验证器,而不是一个 wcag 验证器...(它也验证了我的第一个示例)。
    • HTML5 算法理解 section > h1 是一个比 section > section > h1 具有更多层次结构的标题。阅读此内容:coding.smashingmagazine.com/2011/08/16/… 我对您使用的验证器的看法是,它可能已经过时,所以它不明白如何处理切片。
    • @thebjorn 我相信她的回答暗示如果您要么使用h1 - h6 或 在section 元素中使用h1 元素,而不是混合它们。也就是说,您的代码没有任何问题 - 如果验证器或 WCAG 本身另有说明,它们就是错误的(或者,更仁慈的是,没有赶上现代最佳实践)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    • 2021-04-13
    • 2016-03-27
    • 1970-01-01
    相关资源
    最近更新 更多