assets/css/snippets/navigation.css

253 lines
6.0 KiB
CSS

.nav {
--color: var(--black);
--color--active: var(--white);
--color-background: var(--black);
--button-text: var(--black);
--button-background: transparent;
--button-text--active: var(--white);
--button-background--active: var(--black);
--button-outline: var(--black);
--button-outline--active: transparent;
z-index: 10;
}
.nav--blackAndActiveIsWhite {
--color: var(--black);
--color--active: var(--black);
--color-background: var(--white);
}
.nav--whiteAndActiveIsBlack {
--color: var(--white);
--color--active: var(--white);
--color-background: var(--black);
}
.nav--whiteAndActiveIsWhite {
--color: var(--white);
--color--active: var(--black);
--color-background: var(--white);
}
.nav--whiteAndActiveIsBlack,
.nav--whiteAndActiveIsWhite {
--button-text: var(--white);
--button-background: transparent;
--button-text--active: var(--black);
--button-background--active: var(--white);
--button-outline: var(--white);
--button-outline--active: transparent;
}
.nav--showNavigationGradient,
.nav--showNavigationGradient.nav--blackAndActiveIsWhite,
.nav--showNavigationGradient.nav--whiteAndActiveIsBlack,
.nav--showNavigationGradient.nav--whiteAndActiveIsWhite {
--button-text: var(--black);
--button-background: var(--green);
--button-text--active: var(--black);
--button-background--active: var(--white);
--button-outline: transparent;
--button-outline--active: transparent;
}
.nav {
position: absolute;
width: 100%;
height: 120px;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
}
.nav__container {
align-items: center;
}
@media (min-width: 800px) {
.nav {
height: 200px;
}
}
.nav__logo {
z-index: 3;
}
.nav__logo img {
max-height: 80px;
max-width: 100%;
object-fit: contain;
}
.nav__links {
visibility: hidden;
padding-top: var(--space-20);
padding-bottom: var(--space-10);
background: var(--green);
transition: clip-path 0.3s, visibility 0.3s;
clip-path: polygon(0% 0%, 100% 0%, 100% 0%, 0% 0%);
}
@media (max-width: 1079px) {
.nav__container {
pointer-events: none;
}
.nav__logo,
.nav__menu-button {
pointer-events: all;
}
.nav[aria-expanded="true"] .nav__container {
pointer-events: all;
}
.nav[aria-expanded="true"] .nav__links {
z-index: 2;
clip-path: polygon(
0% 0%,
100% 0%,
100% calc(100% - calc(var(--diagonal) / 2)),
0% 100%
);
}
}
@media (min-width: 1080px) {
.nav__links {
visibility: visible;
padding: 0;
}
}
@media (max-width: 1079px) {
.nav[aria-expanded="true"] .nav__links {
visibility: visible;
}
}
.nav__item {
color: var(--color);
font-family: var(--headline);
font-weight: var(--headline-extrabold);
text-decoration: none;
}
@media (max-width: 1079px) {
.nav__item {
color: var(--black);
font-size: 1.25rem;
}
}
.nav__item--active {
position: relative;
color: var(--color--active);
z-index: 1;
}
.nav__item--active::before {
position: absolute;
top: -40%;
left: -15%;
content: "";
width: 130%;
height: calc(180% + 5px);
background-color: var(--color-background);
transform: rotate(-1.5deg);
z-index: -1;
}
.nav__link:hover,
.nav__item--active .nav__link,
.nav__item:focus .nav__link {
border-bottom: 0.15em solid currentColor;
}
.nav__item:focus {
outline: 0;
}
.nav__menu-button {
justify-self: flex-end;
grid-row: 2 / 3;
grid-column: 11 / 16;
padding: 0.75em 1.25em;
font-size: 0.8rem;
font-family: var(--headline);
font-weight: var(--headline-extrabold);
text-decoration: none;
background: transparent;
border: none;
color: var(--button-text);
background: var(--button-background);
box-shadow: inset 0 0 0 2px var(--button-outline);
border-radius: 100px;
cursor: pointer;
z-index: 3;
}
.nav[aria-expanded="true"] .nav__menu-button {
box-shadow: inset 0 0 0 2px var(--black);
}
[data-whatinput="mouse"] .nav__menu-button {
outline: 0;
}
@media (min-width: 600px) {
.nav__menu-button {
grid-column: 14 / 16;
}
}
@media (min-width: 1080px) {
.nav__links {
clip-path: none;
background: transparent;
}
.nav__menu-button {
display: none;
}
.nav__item:last-child {
padding: 0.75em 1.25em;
font-family: var(--headline);
font-weight: var(--headline-extrabold);
text-decoration: none;
color: var(--color);
background: transparent;
border: none;
border-radius: 100px;
cursor: pointer;
color: var(--button-text);
background: var(--button-background);
box-shadow: inset 0 0 0 2px var(--button-outline);
transition: transform 0.2s ease-out;
}
.nav__item.nav__item--active {
color: var(--color--active);
background: var(--color);
}
.nav__item--active:last-child::before {
content: initial;
}
.nav__item--active:last-child .nav__link,
.nav__item:last-child:hover .nav__link,
.nav__item:last-child:focus .nav__link {
border: none;
}
.nav__item:last-child:hover,
.nav__item:last-child:focus {
color: var(--button-text--active);
background: var(--button-background--active);
box-shadow: inset 0 0 0 2px var(--button-outline--active);
}
.nav__item:last-child:active {
transform: scale(0.96);
}
}
@media (max-width: 1079px) {
.nav[aria-expanded="true"].nav--whiteAndActiveIsWhite,
.nav[aria-expanded="true"].nav--whiteAndActiveIsBlack {
--color: var(--black);
--color--active: var(--black);
--color-background: var(--white);
}
.nav[aria-expanded="true"].nav--whiteAndActiveIsWhite .nav__logo,
.nav[aria-expanded="true"].nav--whiteAndActiveIsBlack .nav__logo {
filter: invert(1);
transition: filter 0.2s;
}
}
.nav--whiteAndActiveIsBlack .nav__logo,
.nav--whiteAndActiveIsWhite .nav__logo {
filter: none;
}
.nav--showNavigationGradient {
background: linear-gradient(
to bottom,
rgba(255, 255, 255, 0.9),
rgba(255, 255, 255, 0)
);
}
.nav--showNavigationGradient.nav--whiteAndActiveIsBlack,
.nav--showNavigationGradient.nav--whiteAndActiveIsWhite {
background: linear-gradient(to bottom, rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0));
}