This example demonstrates how to create a traditional, two-column page layout (using Grids) with top navigation rendered like split buttons.
Begin by including the CSS Grids dependencies and grid markup (this example uses a 2 column version of the Fluid Page Template with a 160px left column). Add the markup for the menu to the left column of the grid.
{{>need-skin-note}} ``` {{>need-skin-comment}} ```
The root menu of menus built using the MenuNav Node Plugin can have a verical or horizontal
orientation. The default orientation for menus is vertical, but can be easily switched to
horizontal by applying a class of yui3-menu-horizontal
to the node representing the
root menu's bounding box, as illustrated below:
To render each menu label in the horizontal menu as a split button, add the class
yui3-splitbuttonnav
to the node representing the root menu's bounding box, as
illustrated below:
Next, define the markup for each menu label. Start with a <span>
with a class
of yui3-menu-label
applied. Inside the <span>
, place two
<a>
elements one for each of the label's two clickable regions.
Each <a>
has separate, but related responsibilities: The first
<a>
represents the label's default action. The second <a>
toggles the display of a submenu whose content contains other options related to, or in the same
category of the default action. Therefore to configure the first <a>
,
simply set its href
attribute to any URL. For the second <a>
,
apply a class name of yui3-menu-toggle
, and set the value of the href
attribute to the id of the label's corresponding submenu. Lastly, the text node of the second
<a>
should label the contents of its corresponding submenu.
With the menu markup in place, retrieve the Node instance representing the root
menu (<div id="productsandservices">
) and call the
plug
passing in a reference to the MenuNav Node Plugin.
Use the
autoSubmenuDisplay
and mouseOutHideDelay
configuration attributes to configure the menu labels to behave like split buttons. Set the
autoSubmenuDisplay
to false
, so that each menu label's submenu isn't
made visible until the menu trigger is clicked. Set the mouseOutHideDelay
to
0
so that a label's submenu is only hidden when the user mouses down on an area
outside of the submenu.
Note: In keeping with the
Exceptional Performance
team's recommendation, the script block used to instantiate the menu will be
placed at the bottom of the page.
This not only improves performance, it helps ensure that the DOM subtree of the
element representing the root menu
(<div id="productsandservices">
) is ready to be scripted.