HTML标题最近成为热门话题,原因是WHATWG实时标准中合并删除了文档大纲算法。
首先,您应该知道该算法实际上从未真正存在过。当然,它在规范中。当然,规范中也警告过不要使用它。但正如Bruce Lawson提醒我们的那样,没有浏览器实现过它。我们一直生活在一个扁平的文档结构中。
这已经是非常旧的消息了。Adrian Roselli从2013年起就开始撰写关于文档大纲谬论的文章。但他的2016年题为“不存在文档大纲算法”的文章全面地阐述了这一点,并定期更新,增加了关于相关对话和斗争的额外背景信息。这确实是关于此事件的最佳时间线。Amelia Bellamy-Royds也曾在CSS-Tricks上深入探讨过这个问题的根源。
我立刻想到的是,为支持分区的文档大纲算法所做的所有工作。从规范中删除它当然是正确的做法,但这并不能减少为它所付出的巨大努力,即使它现在被埋在某个版本历史中。我还想到所有那些好意地撰写关于该算法错误文章的人(包括在这个网站上!),他们期望它即将出现。由于似乎缺乏行动,我们积累了近七年的精神和技术债务。
撇开“算法正式不存在了”这个消息不谈,Bruce 惋惜的是,没有通用的<h></h>
元素或类似的元素可以进行分区以生成正确的标题级别。我同意。让一个元素基本上作为公开的<title></title>
存在是具有约束性的,特别是由于页面很少围绕单个包含单个顶级标题的文章进行结构化。我经常发现自己每次制作某种卡片组件时都会感到痛苦,在这些组件中使用###
在技术上可能是正确的,但感觉顺序不对。这甚至在我们讨论样式考虑之前,其中较低的标题级别现在需要看起来像不同的较高标题级别。
谈到标题级别管理,Steve Faulkner(他编写了从规范中删除该算法的PR)对使用<hgroup></hgroup>
元素处理涉及子标题、副标题、替代标题和标语的标题模式进行了非常实用的概述。我相信您在实际中见过这样的标记:
<code><h1>令人失望的平均水平</h1> <h2>Geoff Graham的自传</h2> <h3>作者:Geoff Graham</h3></code>
这与由标题级别驱动的扁平文档大纲不符。每个标题都代表一个构成信息层次结构的部分:
<code>令人失望的平均水平 └── Geoff Graham的自传 └── 作者:Geoff Graham</code>
我们想要的是一个组标题。这时<hgroup></hgroup>
元素就派上用场了:
当嵌套在
<hgroup></hgroup>
元素中时,该元素的内容表示子标题、替代标题或标语,这些内容不包含在文档大纲中。
因此,我们得到以下结构:
<code><hgroup><h1>令人失望的平均水平</h1> <p>Geoff Graham的自传</p> <p>作者:Geoff Graham</p> </hgroup></code>
<hgroup></hgroup>
目前的角色是role=generic
,但Steve 指出,一个提案可以将其映射到role=group
。如果发生这种情况,辅助技术将允许辅助技术将更多语义含义赋予这些段落,作为它们所扮演的副标题和标语部分。听起来很简单,但Steve 指出了阻碍的挑战。他还演示了如何使用ARIA属性在今天实现这种模式。
在我们总结的同时,Matthias Ott发布了一些关于使用标题创建结构化大纲的技巧。查看结尾处关于检查标题大纲的优秀工具列表。
以上是最近的文档综述大纲的详细内容。更多信息请关注PHP中文网其他相关文章!