RE: creating a menu

Charles McCathieNevile wrote:
[ quotation restructured by me ]

> On Thu, 18 Jul 2002, Jon Hanna wrote:
> >
> >> In this case I would use a dl not the less structured ol/ul.
> >
> >What are you defining?
> 
> Types of cheese, if I recall the example.

But is it a definition for "cheese" if I list down some types of cheese? In
theory, it would be an incomplete definition by enumeration - and a very
unsatisfactory definition even in principle, not to mention practice. Cheese
types don't form a closed set.

For accessibility reasons and for other reasons, we should aim at using as
logical markup as we can. But ol or ul are not less structured than dl. They
are _semantically more generic_. This too implies that preference should in
principle be given to dl over ol or ul _when applicable_. But it is surely
better to use semantically more generic markup than to use _wrong_
semantically specific markup. (In addition to this, even when we have a
definition list, it is far from obvious that dl is the best markup in
practice; but I digress.)

> In addition you are linking to
> them. Since this is a collection of links, I would use the 
> map element to contain them.

In principle, you're right on the grounds that a map element is logically a
collection of links, so it conveys the structure better than the use of
_separate_ markup for a list (or other collection) and the links. And in
principle, it would work well in no-images mode too, thanks to alt
attributes.

On the practical side, there are several accessility and usability problems
with the map element, mainly due to the poor quality of implementations on
visual browsers. The problems are so serious that map elements should
normally be used only when accompanied with an equivalent set of (textual)
links. In addition to the problems in making the alt texts available to
people using visual browsers, see
http://www.cs.tut.fi/~jkorpela/html/mapalt.html
there are problems like
- the "content in attribute" set of problems: the alt text is limited to
plain text, so you cannot use text-level markup in the "link" texts
- no way of giving _preference_ to the textual alternatives
- lack of distinction between "unvisited" and "visited" "links"
- assumably several indexing robots not traversing the "links".

The conclusion is that menus should be primarily written as lists (or
perhaps sometimes tables) of links. Using client-side image maps to
_duplicate_ the menu could be useful in many cases though, when the images
really _add_ something to the functionality; and images of cheese types
could do that. Sometimes the added functionality could be crucial to
accessibility, e.g. for users who easily recognize the images but do not
know the words. After all, even Emmenthal cheese isn't universally known as
"Emmenthal"! (Even then, there's the option of still using just a list of
links, so that each link consists of some text and some image, in some order
and positioning.)

-- 
Jukka Korpela, senior adviser
TIEKE Finnish Information Society Development Centre
http://www.tieke.fi
Phone: +358 9 4763 0397 Fax: +358 9 4763 0399 

Received on Tuesday, 23 July 2002 02:58:10 UTC