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中文網其他相關文章!