/** === Main menu === */ .main-navigation { display: block; margin-top: #{0.25 * $size__spacing-unit}; body.page & { display: block; } > div { display: inline; } /* Un-style buttons */ button { display: inline-block; border: none; padding: 0; margin: 0; font-family: $font__heading; font-weight: 700; line-height: $font__line-height-heading; text-decoration: none; background: transparent; color: inherit; cursor: pointer; transition: background 250ms ease-in-out, transform 150ms ease; -webkit-appearance: none; -moz-appearance: none; &:hover, &:focus { background: transparent; } &:focus { outline: 1px solid transparent; outline-offset: -4px; } &:active { transform: scale(0.99); } } .main-menu { display: inline-block; margin: 0; padding: 0; > li { color: $color__link; display: inline-block; position: relative; > a { font-weight: 700; color: $color__link; margin-right: #{0.5 * $size__spacing-unit}; + svg { margin-right: #{0.5 * $size__spacing-unit}; } &:hover, &:hover + svg { color: $color__link-hover; } } &.menu-item-has-children { display: inline-block; position: inherit; @include media(tablet) { position: relative; } > a { margin-right: #{0.125 * $size__spacing-unit}; } & > a, .menu-item-has-children > a { &:after { content: ""; display: none; } } .submenu-expand { display: inline-block; margin-right: #{0.25 * $size__spacing-unit}; /* Priority+ Menu */ &.main-menu-more-toggle { position: relative; height: 24px; line-height: $font__line-height-heading; width: 24px; padding: 0; margin-left: #{0.5 * $size__spacing-unit}; svg { height: 24px; width: 24px; top: #{-0.125 * $size__spacing-unit}; vertical-align: text-bottom; } } .wp-customizer-unloading &, &.is-empty { display: none; } svg { position: relative; top: 0.2rem; } } } &:last-child > a, &:last-child.menu-item-has-children .submenu-expand { margin-right: 0; } } } .sub-menu { background-color: $color__link; color: $color__background-body; list-style: none; padding-left: 0; position: absolute; opacity: 0; left: -9999px; z-index: 99999; @include media(tablet) { width: auto; min-width: -moz-max-content; min-width: -webkit-max-content; min-width: max-content; } > li { display: block; float: none; position: relative; &.menu-item-has-children { .submenu-expand { display: inline-block; position: absolute; width: calc( 24px + #{$size__spacing-unit} ); right: 0; top: calc( .125 * #{$size__spacing-unit} ); bottom: 0; color: white; line-height: 1; padding: calc( .5 * #{$size__spacing-unit} ); svg { top: 0; } } .submenu-expand { margin-right: 0; } @include media(tablet) { .menu-item-has-children > a { &:after { content: "\203a"; } } } } > a, > .menu-item-link-return { color: $color__background-body; display: block; line-height: $font__line-height-heading; text-shadow: none; padding: calc( .5 * #{$size__spacing-unit} ) calc( 24px + #{$size__spacing-unit} ) calc( .5 * #{$size__spacing-unit} ) $size__spacing-unit; max-width: #{20 * $size__spacing-unit}; &:hover, &:focus { background: $color__link-hover; &:after { background: $color__link-hover; } } } > .menu-item-link-return { width: 100%; font-size: $font__size_base; font-weight: normal; text-align: left; } > a:empty { display: none; } &.mobile-parent-nav-menu-item { display: none; font-size: $font__size-sm; font-weight: normal; svg { position: relative; top: 0.2rem; margin-right: calc( .25 * #{$size__spacing-unit} ); } } } } /* * Sub-menu styles * * :focus-within needs its own selector so other similar * selectors don’t get ignored if a browser doesn’t recognize it */ .main-menu .menu-item-has-children:not(.off-canvas):focus-within > .sub-menu { display: block; left: 0; margin-top: 0; opacity: 1; width: auto; min-width: 100%; /* Non-mobile position */ @include media(tablet) { display: block; margin-top: 0; opacity: 1; position: absolute; left: 0; right: auto; top: auto; bottom: auto; height: auto; min-width: -moz-max-content; min-width: -webkit-max-content; min-width: max-content; transform: none; } &.hidden-links { left: 0; width: 100%; display: table; position: absolute; @include media(tablet) { right: 0; left: auto; display: block; width: max-content; } } .submenu-expand { display: none; } .sub-menu { display: block; margin-top: inherit; position: relative; width: 100%; left: 0; opacity: 1; /* Non-mobile position */ @include media(tablet) { float: none; max-width: 100%; } } /* Nested sub-menu dashes */ .sub-menu { counter-reset: submenu; } .sub-menu > li > a::before { font-family: $font__body; font-weight: normal; content: "\2013\00a0" counters(submenu, "\2013\00a0", none); counter-increment: submenu } } .main-menu .menu-item-has-children:not(.off-canvas):hover > .sub-menu, .main-menu .menu-item-has-children:not(.off-canvas):focus > .sub-menu, .main-menu .menu-item-has-children.is-focused:not(.off-canvas) > .sub-menu { display: block; left: 0; margin-top: 0; opacity: 1; width: auto; min-width: 100%; /* Non-mobile position */ @include media(tablet) { display: block; float: none; margin-top: 0; opacity: 1; position: absolute; left: 0; right: auto; top: auto; bottom: auto; height: auto; min-width: -moz-max-content; min-width: -webkit-max-content; min-width: max-content; transform: none; } &.hidden-links { left: 0; width: 100%; display: table; position: absolute; @include media(tablet) { right: 0; left: auto; display: table; width: max-content; } } .submenu-expand { display: none; } .sub-menu { display: block; margin-top: inherit; position: relative; width: 100%; left: 0; opacity: 1; /* Non-mobile position */ @include media(tablet) { float: none; max-width: 100%; } } /* Nested sub-menu dashes */ .sub-menu { counter-reset: submenu; } .sub-menu > li > a::before { font-family: $font__body; font-weight: normal; content: "\2013\00a0" counters(submenu, "\2013\00a0", none); counter-increment: submenu } } /** * Fade-in animation for top-level submenus */ .main-menu > .menu-item-has-children:not(.off-canvas):hover > .sub-menu { animation: fade_in 0.1s forwards; } /** * Off-canvas touch device styles */ .main-menu .menu-item-has-children.off-canvas .sub-menu { .submenu-expand .svg-icon { transform: rotate(270deg); } .sub-menu { opacity: 0; position: absolute; z-index: 0; transform: translateX(-100%); } li:hover, li:focus, li > a:hover, li > a:focus { background-color: transparent; } > li > a, > li > .menu-item-link-return { white-space: inherit; } &.expanded-true { display: table; margin-top: 0; opacity: 1; padding-left: 0; /* Mobile position */ left: 0; top: 0; right: 0; bottom: 0; position: fixed; z-index: 100000; /* Make sure appears above mobile admin bar */ width: 100vw; height: 100vh; max-width: 100vw; transform: translateX(+100%); animation: slide_in_right 0.3s forwards; > .mobile-parent-nav-menu-item { display: block; } /* Prevent menu from being blocked by admin bar */ .admin-bar & { top: 46px; height: calc( 100vh - 46px ); .sub-menu.expanded-true { top: 0; } /* WP core breakpoint */ @media only screen and ( min-width: 782px ) { top: 32px; height: calc( 100vh - 32px ); .sub-menu.expanded-true { top: 0; } } } } } // Hide duplicate menu-more-link when re-loading a menu in the customizer .main-menu-more { &:nth-child(n+3) { display: none; } } } /* Menu animation */ @keyframes slide_in_right { 100% { transform: translateX(0%); } } @keyframes fade_in { from { opacity: 0; } to { opacity: 1; } }