6.3.1, 6.3.0, 6.2.0
Install with Foundation CLI
Using the Foundation 6 accordion menu component, we created a slick multilevel accordion menu. The icons change as the menu opens and closes. This is great for a side nav, sidebar, mobile menu, or off-canvas menu.
<ul class="multilevel-accordion-menu vertical menu" data-accordion-menu> <li> <a href="#">Item 1</a> <ul class="menu vertical sublevel-1"> <li> <a href="#">Sub-item 1</a> <ul class="menu vertical sublevel-2"> <li><a class="subitem" href="#">Thing 1</a></li> <li><a class="subitem" href="#">Thing 2</a></li> <li><a class="subitem" href="#">Thing 3</a></li> </ul> </li> <li> <a href="#">Sub-item 2</a> <ul class="menu vertical sublevel-2"> <li> <a href="#">Super-sub-item 1</a> <ul class="menu vertical sublevel-3"> <li><a class="subitem" href="#">Thing 1</a></li> <li><a class="subitem" href="#">Thing 2</a></li> </ul> </li> <li><a class="subitem" href="#">Thing 2</a></li> </ul> </li> <li><a class="subitem" href="#">Thing 1</a></li> <li><a class="subitem" href="#">Thing 2</a></li> </ul> </li> <li> <a href="#">Item 2</a> <ul class="menu vertical sublevel-1"> <li><a class="subitem" href="#">Thing 1</a></li> <li><a class="subitem" href="#">Thing 2</a></li> </ul> </li> <li> <a href="#">Item 3</a> <ul class="menu vertical sublevel-1"> <li><a class="subitem" href="#">Thing 1</a></li> <li><a class="subitem" href="#">Thing 2</a></li> </ul> </li> <li> <a href="#">Item 4</a> <ul class="menu vertical sublevel-1"> <li> <a href="#">Sub-item 3</a> <ul class="menu vertical sublevel-2"> <li><a class="subitem" href="#">Thing 1</a></li> <li><a class="subitem" href="#">Thing 2</a></li> </ul> </li> <li><a class="subitem" href="#">Thing 1</a></li> <li><a class="subitem" href="#">Thing 2</a></li> </ul> </li> </ul>
// variables $multilevel-accordion-bg: #4d5158; $multilevel-accordion-sub-bg: #35383d; $multilevel-accordion-separator: #41444a; .multilevel-accordion-menu { // background for main accordion items .is-accordion-submenu-parent a { background: $multilevel-accordion-bg; } // background for sub accordion items .is-accordion-submenu a { background: $multilevel-accordion-sub-bg; } // creates classes for nested elements, sub-item-* @for $i from 1 through 6 { .sublevel-#{$i} { text-indent: 0rem + $i; } } a { color: $white; // sets accodion item separator color box-shadow: inset 0 -1px $multilevel-accordion-separator; &::after { // sets accodion arrow color and direction border-color: $white transparent transparent; } } // padding for each list item .menu > li:not(.menu-text) > a { padding: 1.2rem 1rem; } } // style for folder icon on subitem anchors without a submenu .multilevel-accordion-menu .is-accordion-submenu-parent[aria-expanded="true"] a.subitem::before { content: "\f016"; font-family: FontAwesome; margin-right: 1rem; } // changes folder icon to open then accordion is open .multilevel-accordion-menu .is-accordion-submenu-parent[aria-expanded="true"] a { &::before { content: "\f07c"; font-family: FontAwesome; margin-right: 1rem; } } // changes folder icon to closed then accordion is closed .multilevel-accordion-menu .is-accordion-submenu-parent[aria-expanded="false"] a { &::before { content: "\f07b"; font-family: FontAwesome; margin-right: 1rem; } }
.multilevel-accordion-menu .is-accordion-submenu-parent a { background: #4d5158; } .multilevel-accordion-menu .is-accordion-submenu a { background: #35383d; } .multilevel-accordion-menu .sublevel-1 { text-indent: 1rem; } .multilevel-accordion-menu .sublevel-2 { text-indent: 2rem; } .multilevel-accordion-menu .sublevel-3 { text-indent: 3rem; } .multilevel-accordion-menu .sublevel-4 { text-indent: 4rem; } .multilevel-accordion-menu .sublevel-5 { text-indent: 5rem; } .multilevel-accordion-menu .sublevel-6 { text-indent: 6rem; } .multilevel-accordion-menu a { color: #fefefe; box-shadow: inset 0 -1px #41444a; } .multilevel-accordion-menu a::after { border-color: #fefefe transparent transparent; } .multilevel-accordion-menu .menu > li:not(.menu-text) > a { padding: 1.2rem 1rem; } .multilevel-accordion-menu .is-accordion-submenu-parent[aria-expanded="true"] a.subitem::before { content: "\f016"; font-family: FontAwesome; margin-right: 1rem; } .multilevel-accordion-menu .is-accordion-submenu-parent[aria-expanded="true"] a::before { content: "\f07c"; font-family: FontAwesome; margin-right: 1rem; } .multilevel-accordion-menu .is-accordion-submenu-parent[aria-expanded="false"] a::before { content: "\f07b"; font-family: FontAwesome; margin-right: 1rem; }