142 lines
3.7 KiB
CSS
142 lines
3.7 KiB
CSS
/**
|
|
* @file
|
|
* Navigation in header.
|
|
*/
|
|
|
|
@import "../base/variables.pcss.css";
|
|
|
|
.header-nav {
|
|
position: fixed;
|
|
z-index: 105; /* appear above overlay */
|
|
inset-block-start: 0;
|
|
inset-inline-start: 100%;
|
|
visibility: hidden;
|
|
overflow: auto;
|
|
/* Ensure that header nav not use additional space and force
|
|
system branding block text to unnecessarily wrap. */
|
|
flex-basis: 0;
|
|
flex-grow: 1; /* Necessary for IE11. */
|
|
width: 100%;
|
|
max-width: var(--mobile-nav-width);
|
|
height: 100%;
|
|
padding-block: 0 var(--sp);
|
|
padding-inline-start: var(--sp);
|
|
padding-inline-end: var(--sp);
|
|
border-block-start: solid var(--color--white) var(--sp3); /* Create room for the "close" button. */
|
|
background-color: var(--color--white);
|
|
box-shadow: 0 0 72px rgba(0, 0, 0, 0.1);
|
|
|
|
&.is-active {
|
|
visibility: visible;
|
|
transform: translateX(-100%); /* LTR */
|
|
}
|
|
|
|
@supports (flex-basis: max-content) {
|
|
flex-basis: max-content;
|
|
}
|
|
|
|
@media (--sm) {
|
|
border-top-width: var(--sp5);
|
|
}
|
|
|
|
@media (--md) {
|
|
padding-block-end: var(--sp3);
|
|
padding-inline-start: var(--sp3);
|
|
border-top-width: var(--sp7);
|
|
}
|
|
|
|
@media (--lg) {
|
|
grid-column: 5 / 14;
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Only apply transition styles when JS is loaded. This
|
|
* works around https://bugs.chromium.org/p/chromium/issues/detail?id=332189
|
|
*/
|
|
html.js .header-nav {
|
|
transition: visibility 0.2s, transform 0.2s;
|
|
}
|
|
|
|
/* Toolbar is fixed, and tray is vertical. */
|
|
body.toolbar-vertical .header-nav {
|
|
border-top-width: calc(var(--toolbar-height) + var(--sp3));
|
|
|
|
@media (--sm) {
|
|
border-top-width: calc(var(--toolbar-height) + var(--sp5));
|
|
}
|
|
}
|
|
|
|
/* Toolbar is fixed, and tray is vertical or toolbar is horizontal and tray is closed. */
|
|
body.toolbar-vertical .header-nav,
|
|
body.toolbar-horizontal.toolbar-fixed .header-nav {
|
|
@media (--md) {
|
|
border-top-width: calc(var(--toolbar-height) + var(--sp7));
|
|
}
|
|
}
|
|
|
|
/* Toolbar is horizontal fixed, and tray is open. */
|
|
body.toolbar-horizontal.toolbar-fixed.toolbar-tray-open .header-nav {
|
|
@media (--md) {
|
|
border-top-width: calc(var(--toolbar-height) + var(--toolbar-tray-height) + var(--sp7));
|
|
}
|
|
}
|
|
|
|
body:not(.is-always-mobile-nav) .header-nav {
|
|
@media (--nav) {
|
|
position: static;
|
|
display: flex;
|
|
visibility: visible;
|
|
overflow: visible;
|
|
grid-column: 5 / 15;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
max-width: none;
|
|
height: var(--header-height-wide-when-fixed);
|
|
margin-block-start: auto;
|
|
padding-block: 0;
|
|
padding-inline-start: 0;
|
|
padding-inline-end: 0;
|
|
transition: transform 0.2s;
|
|
transform: none;
|
|
border-block-start: 0;
|
|
box-shadow: none;
|
|
}
|
|
}
|
|
|
|
body.is-always-mobile-nav {
|
|
/* Toolbar is fixed, and tray is vertical or toolbar is horizontal and tray is closed. */
|
|
&.toolbar-vertical .header-nav,
|
|
&.toolbar-horizontal.toolbar-fixed .header-nav {
|
|
@media (--nav) {
|
|
border-top-width: calc(var(--toolbar-height) + var(--sp11));
|
|
}
|
|
}
|
|
|
|
/* Toolbar is horizontal fixed, and tray is open. */
|
|
&.toolbar-horizontal.toolbar-fixed.toolbar-tray-open .header-nav {
|
|
@media (--nav) {
|
|
border-top-width: calc(var(--toolbar-height) + var(--toolbar-tray-height) + var(--sp11));
|
|
}
|
|
}
|
|
|
|
& .header-nav {
|
|
@media (--nav) {
|
|
overflow: auto;
|
|
max-width: calc((7 * (var(--grid-col-width--nav) + var(--grid-gap--nav))));
|
|
padding-inline-end: var(--sp);
|
|
transition: transform 0.2s, visibility 0.2s;
|
|
border-top-width: var(--sp11);
|
|
}
|
|
|
|
@media (--grid-max) {
|
|
max-width: calc(100vw - (var(--max-width) + var(--content-left)) + ((7 * (var(--grid-col-width--max) + var(--grid-gap--max)))));
|
|
padding-inline-end: calc(100vw - (var(--max-width) + var(--content-left) - var(--sp)));
|
|
}
|
|
}
|
|
}
|
|
|
|
[dir="rtl"] .header-nav.is-active {
|
|
transform: translateX(100%);
|
|
}
|