RE: should HTML have a <heading> element?


Not sure I understand how a "hybrid" document might work from the description below.

If I have mixed <h#>s and <heading>s, sometimes within a sectioning element, the browser will have to make some nesting assumptions I may not want -- assuming a <heading> is what triggers a browser to drop into an outline mode.

<main>
<h1>Title</h1>
<p>content</p>
<h2>Subtitle</h2>
<p>content</p>
 <section>
 <heading>Section Title</heading>
 <p>content</p>
 <heading>Section Subtitle</heading>
 <p>content</p>
 </section>
 <section>
 <heading>Other Section Title</heading>
 <p>content</p>
 <h2> Other Section Subtitle</h2>
 <p>content</p>
 <h3> Other Section Sub-Subtitle</h3>
 <p>content</p>
 <h2> Other Section Subtitle</h2>
 <p>content</p>
 </section>
</main>

I see that as:

Title
 Subtitle
  Section Title
  Section Subtitle
  Other Section Title
   Other Section Subtitle
    Other Section Sub-Subtitle
   Other Section Subtitle

I see all <heading>s as a peer to all other <heading>s within a given section. You can't know how to "nest" them otherwise (<h#> has that capacity built in).

In my own writing I often drill down to an <h3>, through to an <h4>, back up to the <h2>, and down again [1]. Unless we start manually adding attributes with nesting level, I couldn't rely on <heading> alone to convey my document/content structure (maybe that's the point?).

However, when you start throwing <h#> within a section (which includes <section>) that is opened with <heading>, perhaps the nesting order resets, treating <heading> as the next highest available nesting level for the page, and subsequent <h#>s maintain their relative nesting order starting below the <heading>. So <heading> resets subsequent <h#> to start below, regardless of a <h#> number.

IOW, that's what my pseudo-code-tree above does.

Conversely, if we simply discard all <h#> for document outlines and lean solely on <heading> then I suppose that removes my concern. I can still use <h#> in my content comfortably, provided they aren't factored into the outline. The drawback, IMO, is that <heading> can really only exist once in a section without implying peer-level content that may not be so. It also removes the value for users from a well-structured (via <h#>) document.


[1] http://blog.adrianroselli.com/2013/09/new-ipad-browser-coast-by-opera.html



> From: Steve Faulkner [mailto:faulkner.steve@gmail.com] 
> Sent: Friday, May 09, 2014 4:32 AM
> 
> discussion starter:
> HTML5 has the outline algorithm [1] (as yet largely unimplemented  )
> which effectively removes the semantic meaning of numeric headings. 
>  
> example: 
> <body>
> <h6>
> 
> does not mean a heading level 6 it means a heading level 1 
>  
> 
> conversely:
> <body>
> <section />
> <section />
> <section />
> <section />
> <section />
> <section />
> <h1>
> 
> does not mean a heading level 1 it means a heading level 7 It has been
> suggested by marco zehe from Mozilla [3] that the only clean way
> forward for the outline algorithm is this:
> 
> 1. Leave h1 to h6 alone as they always were. h1 through h6 are always
> that regardless of what they are nested in.
> 
> 2. Introduce a new element named "heading" or the like that is the only
> element participating in the outline algorithm. it gets a level of 1 by
> default, and a level of greater than 1 depending on which section
> elements it is nested in. So a section heading gets a level of 2, a
> section section heading gets a level of 3 etc. And the calculation of
> the levels is the sole responsibility of the browser, indicating the
> calculated level as an implicit aria-level attribute. Styling could
> then be based off the section nesting or the proposed DOM attribute
> that would correspond to implicit aria-level.
> 
> This is the only way where there is a clean choice for web developers:
> Use the limited 1 to 6 heading levels, or choose a more free and modern
> way of structuring documents, and the browser takes care of
> communicating the level to assistive technologies.
> 
> 
> A custom <heading> element [2] designed to explore how such a feature
> could work in practice is in development.
> 
> [1] http://www.w3.org/html/wg/drafts/html/master/sections.html#outlines

> [2] https://github.com/ThePacielloGroup/w3c-heading#w3c-heading

> [3] https://www.w3.org/Bugs/Public/show_bug.cgi?id=25003#c18

Received on Saturday, 10 May 2014 22:58:58 UTC