Skip to content
Skip to content

Menu

Our flexible menu component makes it easy to build many common navigation patterns.


Usage

Basic Menu

<ul class="c-menu">
  <li class="c-menu__item"><a href="#" class="c-menu__link">One</a></li>
  ...
  </ul>

  {{ Menu(
    [
      { "text": "One", "url": "#" },
      { "text": "Two", "url": "#" },
      { "text": "Three", "url": "#" },
      { "text": "Four", "url": "#" }
    ]
  ) }}
  

Item alignment

Right align (.c-menu--right)

<ul class="c-menu c-menu--right">
  <li class="c-menu__item"><a href="#" class="c-menu__link">One</a></li>
  ...
</ul>

{{ Menu(
  [
    { "text": "One", "url": "#" },
    { "text": "Two", "url": "#" },
    { "text": "Three", "url": "#" },
    { "text": "Four", "url": "#" }
  ],
  "c-menu--right"
) }}

Centred (.Menu--center)

<ul class="c-menu c-menu--center">
  <li class="c-menu__item"><a href="#" class="c-menu__link">One</a></li>
  ...
</ul>

{{ Menu(
  [
    { "text": "One", "url": "#" },
    { "text": "Two", "url": "#" },
    { "text": "Three", "url": "#" },
    { "text": "Four", "url": "#" }
  ],
  "c-menu--center"
) }}

Expanded (.c-menu--expanded)

<ul class="c-menu c-menu--expanded">
  <li class="c-menu__item"><a href="#" class="c-menu__link">One</a></li>
  ...
</ul>

{{ Menu(
  [
    { "text": "One", "url": "#" },
    { "text": "Two", "url": "#" },
    { "text": "Three", "url": "#" },
    { "text": "Four", "url": "#" }
  ],
  "c-menu--expanded"
) }}

Menu item alignment (.c-menu__item--right & .c-menu__item--left)

<ul class="c-menu">
  <li class="c-menu__item"><a href="#" class="c-menu__link">One</a></li>
  ...
  <li class="c-menu__item c-menu__item--right"><a href="#" class="c-menu__link">Four</a></li>
</ul>

<ul class="c-menu c-menu--right">
  <li class="c-menu__item c-menu__item--left"><a href="#" class="c-menu__link">One</a></li>
  ...
  <li class="c-menu__item"><a href="#" class="c-menu__link">Three</a></li>
</ul>

{{ Menu(
  [
    { "text": "One", "url": "#", "classList": "c-menu__item--left" },
    { "text": "Two", "url": "#" },
    { "text": "Three", "url": "#" },
    { "text": "Four", "url": "#" }
  ],
  "c-menu--right"
) }}

Active menu item state (.is-active)

<ul class="c-menu">
  <li class="c-menu__item"><span class="c-menu-title">c-menu title</span></li>
  <li class="c-menu__item is-active"><a href="#" class="c-menu__link">One</a></li>
  ...
</ul>

{{ Menu(
  [
    { "id": "one", "text": "One", "url": "#", "classList": "c-menu__item--left" },
    { "id": "two", "text": "Two", "url": "#" },
    { "id": "three", "text": "Three", "url": "#" },
    { "id": "four", "text": "Four", "url": "#" }
  ],
  "",
  "two"
) }}

Menu header (.c-menu__header)

<ul class="c-menu">
  <li class="c-menu__item"><span class="c-menu-title">c-menu title</span></li>
  <li class="c-menu__item"><a href="#" class="c-menu__link">One</a></li>
  ...
</ul>

{{ Menu(
  [
    { "text": "Menu header", "header": true },
    { "text": "One", "url": "#" },
    { "text": "Two", "url": "#" },
    { "text": "Three", "url": "#" },
    { "text": "Four", "url": "#" }
  ]
) }}

Vertical menu (.Menu--vertical)

<ul class="c-menu c-menu--vertical">
  <li class="c-menu__item"><span class="c-menu__header">c-menu header</span></li>
  <li class="c-menu__item"><a href="#" class="c-menu__link">One</a></li>
  ...
</ul>

{{ Menu(
  [
    { "text": "Menu header", "header": true },
    { "text": "One", "url": "#" },
    { "text": "Two", "url": "#" },
    { "text": "Three", "url": "#" },
    { "text": "Four", "url": "#" }
  ],
  "c-menu--vertical"
) }}

Vertical nested menu

Responsive menu (.c-menu@xs, .c-menu@sm, .c-menu@md,. c-menu@lg)

Unstyled links

<ul class="c-menu">
  <li class="c-menu__item"><a href="#" class=" ">One</a></li>
  ...
</ul>

{{ Menu(
  [
    { "text": "One", "url": "#", "linkClassList": " " },
    { "text": "Two", "url": "#", "linkClassList": " " },
    { "text": "Three", "url": "#", "linkClassList": " " },
    { "text": "Four", "url": "#", "linkClassList": " " }
  ]
) }}

Icon links

<ul class="c-menu">
  <li class="c-menu__item">
    <a href="#" class="c-menu__link">
      <span class="o-icon o-icon--sc-facebook ">
        <svg viewBox="0 0 1 1"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://jaywing.github.io/atomic-framework/images/icons.svg#sc-facebook"></use></svg>
      </span>
    </a>
  </li>
  ...
</ul>

{{ Menu(
  [
    { "text": "", "url": "#", "icon": "sc-facebook" },
    { "text": "", "url": "#", "icon": "sc-twitter" },
    { "text": "", "url": "#", "icon": "sc-google-plus" },
    { "text": "", "url": "#", "icon": "sc-youtube" }
  ]
) }}

Tabular menu (.c-menu--tabular)

Attached menu (.c-menu--attached)

It is possible to attached the menu to other attachable items, for example, the panel component, to create a tab like component.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Error illum magnam minima placeat rem! Ab at beatae culpa deleniti excepturi, exercitationem illo laboriosam nostrum officia perspiciatis recusandae sequi tempora voluptates.

<ul class="c-menu c-menu--tabular c-menu--attached">
  <li class="c-menu__item is-active"><a href="#" class="c-menu__link">One</a></li>
  ....
</ul>
<div class="c-panel c-panel--box c-panel--attached c-panel--stacked">
  ....
</div>
<ul class="c-menu">
  <li class="c-menu__item"><span class="c-menu-title">c-menu title</span></li>
  <li class="c-menu__item is-active"><a href="#" class="c-menu__link">One</a></li>
  ...
</ul>
Class Description Type
.c-menu Set Menu to use flexbox and aligns items to the left by default Component
.c-menu[@xs,@sm,@md,@lg] Used in conjunction with c-menu--vertical to break to horizonal at 480px, 640px, 768px or 960px Responsive modifier
.c-menu--right Aligns items to the right Component modifier
.c-menu--center Aligns items centrally Component modifier
.c-menu--expanded Menu items expand to fill the available space Component modifier
.c-menu--vertical Aligned menu items vertically in a stacked menu Component modifier
.c-menu--flush Removes the left margin of a nested vertical menu Component modifier
.c-menu__item A menu item Sub-element
.c-menu__item--right Aligns menu item to the right if the menu is left aligned Sub-element modifier
.c-menu__item--left Aligns menu item to the left if the menu is right aligned Sub-element modifier
.c-menu__item.is-active A active menu item Active state
.c-menu__link A menu link Sub-element
.c-menu__header A menu header Sub-element