// ----------------------------------------------------------- // Site navigation desktop layout // // The main layout for the website navigation, for a desktop // devices only. // ----------------------------------------------------------- $color-nav-dropdown-links: #333; $color-nav-links: #333; $color-nav-dropdown-links: #333; $dropdown-width: 19rem; $icon-arrow-right: '../svg/chevron-right-dark.svg'; $icon-arrow-down: '../svg/chevron-down-dark.svg'; $icon-arrow-left: '../svg/chevron-left-dark.svg'; $hover-intent: .3s; $absolute-navigation: false; @if $absolute-navigation == true { $icon-arrow-down: '../svg/chevron-down.svg'; .nav-container { position: absolute; width: 100%; // Main level links .nav-primary > ul > li > a { color: #fff; position: relative; } .nav-primary > ul > li > a:hover { color: #fff; } } } // Set true/false in _nav-core.sccss @if $enable-animations == true { @media only screen and (min-width: $responsivenav) { .sub-menu { width: $dropdown-width; visibility: hidden; opacity: 0; position: absolute; top: 100%; left: 0; transform: translateY(-2em); z-index: -1; transition: all .3s ease-in-out $hover-intent, visibility $hover-intent linear $hover-intent, z-index 0s linear .01s; @if $hover-intent == 0 { transition: all .3s ease-in-out 0s, visibility 0s linear .3s, z-index 0s linear .01s; } } .nav-primary ul .sub-menu.toggled-on { visibility: visible; opacity: 1; z-index: 1; transform: translateY(0%); transition-delay: 0s, 0s, .3s; } [data-whatinput="keyboard"] .sub-menu { transition: none; transition-delay: none; transform: none; } [data-whatinput="mouse"] .nav-primary ul .menu-item-has-children, [data-whatintent="mouse"] .nav-primary ul .menu-item-has-children { &:focus > .sub-menu, &:focus-within > .sub-menu, &:hover > .sub-menu { visibility: visible; opacity: 1; z-index: 1; transform: translateY(0%); transition-delay: 0s, 0s, .3s; } } // Disable all animations, enable hovers for no-js users .no-js { .sub-menu { width: $dropdown-width; visibility: hidden; opacity: 0; position: absolute; top: 100%; left: 0; transform: translateY(-2em); z-index: -1; transition: none; transition-delay: none; } .nav-primary ul .menu-item-has-children:focus > .sub-menu, .nav-primary ul .menu-item-has-children:focus-within > .sub-menu, .nav-primary ul .menu-item-has-children:hover > .sub-menu { visibility: visible; opacity: 1; z-index: 1; transform: translateY(0%); transition-delay: 0s, 0s, .3s; } } // Disable animations and improve styles on IE10 + IE11 @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { .nav-primary .menu-items .sub-menu { width: $dropdown-width; visibility: visible; opacity: 1; top: 0; transform: translateY(1.5rem); z-index: -1; transition: none; transition-delay: none; list-style-type: none; list-style: none; .menu-item { padding-top: 0; margin-top: 0; list-style-type: none; list-style: none; } .sub-menu.has-sub-menu { transform: translateY(0); padding-top: .5rem; } } .nav-primary ul .menu-item-has-children { &:focus > .sub-menu, &:focus-within > .sub-menu, &:hover > .sub-menu { visibility: visible; opacity: 1; z-index: 1; transform: translateY(0%); transition-delay: 0s, 0s, .3s; } } } } } @media only screen and (min-width: $responsivenav) { // Use display block based hovers if no animations enabled @if $enable-animations == false { // Enable hovers .nav-primary ul li:hover > ul { display: block; } // Support for non-js users .no-js .nav-primary ul li:hover > ul, .no-js .nav-primary ul li:focus > ul { display: block; } } @media only screen and (max-width: $responsivenav) { .nav-primary ul li:hover > ul { display: block; } } // Disable animations on IE10 + IE11 @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { // Enable hovers .nav-primary ul li:hover > ul { display: block; } } // Dropdown arrows for no-js users .no-js .nav-primary .menu-items .menu-item-has-children { &:after { @include vertical-align(); text-indent: -9999px; overflow: hidden; margin-top: 0; margin-right: 0; right: 0; background-color: transparent; padding: 0; background-image: url($icon-arrow-down); background-repeat: no-repeat; background-position: center; color: transparent; position: absolute; height: 8px; width: 8px; border: 0; content: ' '; display: block; } .sub-menu .menu-item-has-children:after { position: absolute; right: 8px; top: 50%; margin-top: 0; padding: 0; text-indent: -9999px; overflow: hidden; background-color: transparent; background-image: url($icon-arrow-right); background-repeat: no-repeat; background-position: center; color: transparent; width: 12px; height: 12px; border: 0; content: ' '; display: block; } } // Make sure mobile nav-toggle is hidden on desktop .nav-toggle { display: none; } // Start navigation .nav-primary { // Set based on logo height, for example air logo is about 62px // menu links height are 12px, so paddings are (60/2)-12: padding-top: 1.7rem; padding-bottom: 1.7rem; float: right; .menu-items { margin: 0; padding: 0; background: transparent; position: relative; float: left; } // General menu items .menu-item { position: relative; float: left; margin: 0; // Main level a { color: $color-nav-links; font-size: 16px; padding: 20px 12px; font-weight: 600; &.disabled { color: #bbb; } // Actions in menu items &:hover, &:focus, &:active, &.highlighted, &.current { color: $color-nav-links; } } // Dropdowns ul { position: absolute; background: #fff; margin-left: 0; padding-bottom: .5rem; padding-top: .5rem; margin-top: 18px; z-index: 999; &.sub-menu { padding-top: .5rem; padding-bottom: .5rem; li { margin: 0; } } .dropdown-toggle { position: absolute; right: 1rem; top: .4rem; border: 0; } li { float: none; width: $dropdown-width; padding: 0; // Sub-level toggle arrow .dropdown-toggle { position: absolute; right: 8px; top: 50%; margin-top: 0; padding: 0; text-indent: -9999px; overflow: hidden; background-color: transparent; background-image: url($icon-arrow-right); background-repeat: no-repeat; background-position: center; color: transparent; width: 12px; height: 12px; border: 0; // Toggled state &.toggled-on { background-image: url($icon-arrow-left); } } // Prevent nav from flickering &.menu-item-has-children { a { // Let's make space for the arrow padding-right: 3.5rem; margin-right: 0; margin-bottom: 0; width: 100%; } } } ul { top: 0; left: 100%; margin-left: 0; margin-top: -5px; } a { padding: .8rem 1.5rem; font-size: 1.4rem; color: $color-nav-dropdown-links; display: block; &:hover, &:focus, &:active, &.highlighted { color: $color-links; } &.disabled { background: #fff; color: #ccc; } } } // Main level toggle arrow .dropdown-toggle { @include vertical-align(); text-indent: -9999px; overflow: hidden; margin-top: 0; margin-right: 0; right: 0; background-color: transparent; padding: 0; background-image: url($icon-arrow-down); background-repeat: no-repeat; background-position: center; color: transparent; position: absolute; height: 8px; width: 8px; border: 0; } // Bubble arrow > li > ul:after { content: ''; position: absolute; width: 0; height: 0; overflow: hidden; border-style: dashed dashed solid; top: -16px; left: 31px; border-width: 8px; border-color: transparent transparent #fff; } } // Prevent nav from flickering .menu-item.menu-item-has-children { margin-right: .8rem; > a { // Let's make space for the nav-toggle/arrow padding-right: 1.5rem; margin-bottom: .8rem; } } } }