I'm contemplating an alternative to the usual nested-list nav menu structure and solicit your opinions.

First, here's a standard nested menu. Opinions vary as to whether it's kosher to include all the sub-menus nested inside the parent and conceal the inactive sub-menus from visual users. I've included all the sub-menus in this markup for the sake of illustration:

<h3>Navigation</h3>
<ul>
        <li><a href="home.php">Home</a></li>
        <li><a href="products.php">Products</a>
                <ul>
                        <li><a href="widgets.php">Widgets</a>
                        <li><a href="whatsits.php">Whatsits</a>
                        <li><a href="thingummies.php">Thingummies</a>
                </ul>
        </li>
        <li><a href="philosophies.php">Philosophies</a>
                <ul>
                        <li><a href="tao.php">Tao</a>
                        <li><a href="zen.php">Zen</a>
                </ul>
        </li>
</ul>

This makes semantic sense but could wear on your patience if you're hearing the page through a screen-reader. If you activate a link in the parent menu and bring up a new page that again contains the navigation menu, how do you know that a sub-menu exists inside the parent item? Do you have to listen through all the menu options you've already heard in order to discover and hear the new sub-menu?

As an alternative, I'm considering a series of linked lists instead of one complex nested list. In the following example, the Products and Philosophies sub-menus appear after, not nested inside, the top-level menu. The Products and Philosophies items in the top-level menu now contain URI fragment identifiers (same-page anchors) linking to their sub-menus farther down the page. If you've navigated to the Products home page, I'd also add a skip link to the Products sub-menu so you wouldn't be forced to hear the top-level nav menu again:

<p><a href="#products">Skip to Products</a></p>

<h3>Navigation</h3>
<ul>
        <li><a href="home.php">Home</a></li>
        <li><a href="#products">Products</a></li>
        <li><a href="#philosophies">Philosophies</a></li>
</ul>

<div id="products">
        <h3>Products</h3>
        <ul>
                <li><a href="widgets.php">Widgets</a>
                <li><a href="whatsits.php">Whatsits</a>
                <li><a href="thingummies.php">Thingummies</a>
        </ul>
</div>

<div id="philosophies">
        <h3>Philosophies</h3>
        <ul>
                <li><a href="tao.php">Tao</a>
                <li><a href="zen.php">Zen</a>
        </ul>
</div>


Advantages:

1) faster & easier for non-visual users to navigate (I hope).

2) lends itself easily to visual layouts in which the sub-menu lies in a column or row adjacent to the parent menu.

3) sub-menus can be displayed or concealed for visual users in the same ways as nested sub-menus are.

Disadvantages:

1) The semantic relationship of parent menu item to sub-menu is obscured if not lost.

2) Because the sub-menu is not structurally nested within the parent item, some visual layouts of the menu will be difficult or impossible, such as the nested folder metaphor.

Your comments?

Paul

******************************************************
The discussion list for  http://webstandardsgroup.org/

See http://webstandardsgroup.org/mail/guidelines.cfm
for some hints on posting to the list & getting help
******************************************************

Reply via email to