File: D:/HostingSpaces/carrotps/carrotps.com/resources/sass/site/6-Organisms/_organisms.overlayMenu.scss
// Component settings: Overlay menu
// ------------------------------------------
$o-overlay-menu: (
'color': palette(text-on-primary),
'bgcolor': palette(primary),
'shader-color': rgba(0, 0, 0, 0.6),
'move-speed': 400ms,
'opacity-speed': 200ms,
);
// ------------------------------------------
.o-overlay-menu {
@include z(z-overlay-menu);
display: flex;
flex-direction: column;
opacity: 0;
position: fixed;
height: 100%;
width: 100%;
left: 0;
top: 0;
background-color: map-get($o-overlay-menu, 'bgcolor');
// When it disappears out of view
transform: translateX(-120vw);
transition-property: transform, opacity;
transition-duration: map-get($o-overlay-menu, 'move-speed'), map-get($o-overlay-menu, 'opacity-speed');
transition-delay: 0s, map-get($o-overlay-menu, 'move-speed');
transition-timing-function: cubic-bezier(0.5, 0.15, 0.1, 1), linear;
// When it comes into view
.is-overlay-menu-active & {
opacity: 1;
transform: none;
transition-delay: map-get($o-overlay-menu, 'opacity-speed'), 0s;
}
// Shader
&::before {
display: block;
content: '';
position: absolute;
top: 0;
right: -120vw;
width: 120vw;
height: 100%;
background: map-get($o-overlay-menu, 'shader-color');
pointer-events: none;
opacity: 0;
transition-property: opacity;
transition-duration: map-get($o-overlay-menu, 'opacity-speed');
transition-delay: map-get($o-overlay-menu, 'move-speed');
transition-timing-function: linear;
.is-overlay-menu-active & {
opacity: 1;
transition-delay: 0s;
}
}
// Diagonal shape on the right
&::after {
display: block;
content: '';
position: absolute;
top: 0;
right: -20%;
width: 20%;
height: 100%;
background: linear-gradient(-86deg, transparent 50%, map-get($o-overlay-menu, 'bgcolor') 50%);
}
// Hide overlay menu on larger viewports
@include mq($bp-header-large) {
display: none;
}
}
.o-overlay-menu__bar {
@include contain;
@include flex(center space-between);
padding-top: space(4);
padding-bottom: space(4);
}
.o-overlay-menu__img {
height: space(6);
}
.o-overlay-menu__toggle {
transform: rotate(-0.5turn);
transition: transform 600ms ease-out;
transition-delay: 200ms;
.is-overlay-menu-active & {
transform: none;
}
}
.o-overlay-menu__nav {
@include contain;
margin-top: space(3);
}
.o-overlay-menu__list {
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
height: calc(58vh);
margin-left: 0;
list-style: none;
}
.o-overlay-menu__link {
@include font-size(l);
display: block;
color: map-get($o-overlay-menu, 'color');
text-decoration: none;
opacity: 0.7;
transition: opacity 200ms linear;
&:hover {
opacity: 1;
}
&:focus {
outline-offset: 2px;
outline-color: map-get($o-overlay-menu, 'color');
}
&.is-active {
opacity: 1;
position: relative;
font-weight: 600;
}
}