The document source for this example/widget is particularly interesting: notice that there is very little JavaScript involved. In testing, the menu widget degraded perfectly for 4.x browsers and Opera, resulting in four links across the top.
A sort of quasi-style is implemented in the menu widget: notice that the DIV containing the main links is styled with an attribute called “judestyle.” And for each link, the “submenu” attribute is available and necessary to associate a link to a submenu. This is a nice way to abstract the content from the scripting and layout and therefore supplements regular CSS.
This is a simplified set of code; view the actual source code to see everything that's going on.
<script type="text/javascript" src="lib/jude.js"></script>
<script type="text/javascript">
jude.include( "widgets.menu" ) ;
jude.onload = function() {
menu( "MENU" ) ;
};
</script>
<!-- the style settings are completely up to you -->
<style type="text/css">
#MENU {
position : absolute ;
left : 0px ;
top : 0px ;
width : 100% ;
height : 17px ;
padding-top : 2px ;
border-bottom : 1px solid ;
}
.sub-menu {
position : absolute ;
visibility : hidden ;
padding : 2px ;
border : 1px solid ;
}
</style>
<div id="MENU" judestyle="shadow:visible; spacing:20px">
<a href="link1.html" submenu="SUBMENU1">menu heading 1</a>
<a href="link2.html" submenu="SUBMENU2">menu heading 2</a>
</div>
<div id="SUBMENU1" class="sub-menu" judestyle="width:200px">
<a href="sub1-link1.html">sub 1 link 1</a>
<a href="sub1-link2.html">sub 1 link 2</a>
</div>
<div id="SUBMENU2" class="sub-menu" judestyle="width:150px">
<a href="sub2-link1.html">sub 2 link 1</a>
<a href="sub2-link2.html">sub 2 link 2</a>
</div>