[whatwg] Navigation Lists — A different use for <MENU>, and two errors

Nicholas Shanks contact at nickshanks.com
Mon Mar 19 09:09:56 PDT 2007


Given XHTML 2.0's idea of an element for navigation list (using <nl>  
as the tag [1]), it occurred to me that <menu>, deprecated in HTML 4  
but resurrected in HTML 5, would be entirely suitable for this  
purpose and fully backwards compatible. From what I can gather, this  
was the intended purpose of the element in the first place (not  
mimicking of OS menus/toolbars). It was little-used probably though  
lack of awareness.

I suggest that a new type, "navigation", be available for the menu  
element. It's default rendering would be unchanged from HTML 4  
(essentially, the type would be a no-op) but used to explicitly  
declare destination-oriented rather than an action-orientated menus.  
This would be in addition to rather than instead of the <nav>  
element, who's behaviour in HTML4 UAs is that of <div> rather than  
<ul>. (And be backwards-compatible, something <nav> isn't!)

e.g.
<menu type="popup">  <!-- not a popup menu, actually declaring  
contextual menu items -->
	<li>Bold
	<li>Italic
	<li>Bold and Italic
</menu>
<menu type="toolbar">  <!-- button-like behaviour -->
	<li>Embolden
	<li>Italicise
</menu>
<nav><menu type="navigation">  <!-- contains some links -->
	<li><a href="bold">Typeface weights</a>
	<li><a href="italic">Cursive writing</a>
</menu></nav>


In particular, it seems pertinent for accessibility. For example,  
this survey seems to highlight that blind users cannot easily  
distinguish between menus and submenus:
http://www.usability.com.au/resources/source-order.cfm
(I highly recommend reading that article !)

Allowing header elements within the menu content model would  
alleviate this. Currently the "label" attribute is used for this  
purpose, which has all the failings of an attribute discussed at  
length in other threads, but most importantly does not get seen by  
users with screen readers!


I also think that the "popup" type should be renamed "contextual".  
What is known as a pop-up menu is created by using the <select> element.


Further, I am concerned about the backwards-compatibility of menus  
inside menus. The current spec says that if the submenu contains no  
label, it should render in line with the previous items. This  
contradicts HTML ² 4 which says that menus inside menus should act  
the same as ULs inside ULs. (i.e. indent; create a submenu).


[1]: http://www.w3.org/TR/xhtml2/mod-list.html#edef_list_nl

- Nicholas.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2157 bytes
Desc: not available
URL: <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/attachments/20070319/2172f4c9/attachment.bin>


More information about the whatwg mailing list