The heading elements (<h1> to <h6>) define a new, implicit section when they aren't the first heading of their parent, explicit, sections. The way this implicit section is positioned in the outline is defined by its relative rank with the previous heading in its parent section. If it is of a lower rank than the previous heading, it opens an implicit sub-section of the section.
規則如下
- 如果有任一個 heading elements (<h1> to <h6>) 出現在第一個 heading element 之後,則一個隱性的 section 會被產生。
- 這個 section 會參照它上一層 heading element 的相對層級 (<h1> to <h6>),產生至相對的位置
- 也就是說,如果它比上一個 heading element 還要低一層,則會在目前 section 底下新增一個 subsection
HTML5 Outline Algorithm
What is an Algorithm?
What is HTML5 Outline Algorithm?
Section 及 Heading
定義 Section
<body>
內的元素都可以是 Section 的一部分<body>
,<section>
,<article>
,<aside>
,<nav>
Section 範例
以上述的例子來說
<section>
及<footer>
<section>
內還包含了三個 subsection,分別為兩個<section>
及一個<aside>
所以我們得到以下 outline
定義 headings
除了 HTML Section 用以定義文件結構之外,HTML outline 還需要 headings 讓每一個 Section 有意義。
規則如下:
我們會得到以下的 Outline
因此,每個 Section 都只會以其 top-level 的 heading element 為主要依據。
隱性的 Section (Implicit sectioning)
為了向後支援那些已經存在的 HTML4 頁面,因此 HTML5 Sectioning Elements 並不是唯一能夠定義 Outline 的方法;所以我們另外定義了一種 sectioning 的方式,而這樣的方式稱為 implicit sectioning。
The heading elements (
<h1>
to<h6>
) define a new, implicit section when they aren't the first heading of their parent, explicit, sections. The way this implicit section is positioned in the outline is defined by its relative rank with the previous heading in its parent section. If it is of a lower rank than the previous heading, it opens an implicit sub-section of the section.規則如下
範例如下
則會得到以下 Outline
特殊情境
情境A:如果在 section 裡頭出現的第二個 heading element,與第一個 heading element 同等級
範例如下
則會得到以下 Outline
情境B:如果在 section 裡頭出現的第二個 heading element,比第一個 heading element 還要高
範例如下
則會得到以下 Outline
例外狀況
如果你有一個 section,是透過 CMS 管理的,而最後可能會被插入到任意的頁面當中,那麼最好就讓這個 section 自身從 h1 開始寫起,並且搭配 Explicit section tags 即可。
Sectioning root 區塊根元素
<body>
之外,還包含<blockquote>
,<details>
,<fieldset>
,<figure>
and<td>
用以下範例來說
會得到以下 Outline
而
<blockquote>
所產生的內部 outline 則會成為一份外部引用 (待釐清?)那些會被排除在 Outline 之外的 Sections
<aside>
<nav>
Headers and Footers
<header>
元素<article>
,<section>
,<aside>
,<nav>
可以有自己的<header>
<footer>
元素<article>
,<section>
,<aside>
,<nav>
可以有自己的<footer>