@r00t80y/primary-navigation
Version:
An overlay Menu with a collection of effects and styles using CSS transitions.
169 lines (165 loc) • 4.15 kB
CSS
.navigation {
position: relative;
}
.navigation__state-control {
display: none;
-webkit-appearance: none;
appearance: none;
opacity: 0;
}
.navigation__state-control:checked ~ .navigation__panel {
visibility: visible;
opacity: 1;
}
.navigation__state-control:checked ~ .navigation__panel--left {
-ms-transform: translateX(400px);
transform: translateX(400px);
}
.navigation__state-control:checked ~ .navigation__panel--right {
-ms-transform: translateX(-400px);
transform: translateX(-400px);
}
.navigation__panel {
visibility: hidden;
display: block;
position: fixed;
top: 0px;
z-index: 1000;
will-change: transform, opacity;
opacity: 0;
transition-property: transform, opacity, visibility;
transition-duration: 400ms;
transition-timing-function: ease-in-out;
}
.navigation__panel--left {
left: -400px;
-ms-transform: translateX(0);
transform: translateX(0);
}
.navigation__panel--right {
right: -400px;
-ms-transform: translateX(0);
transform: translateX(0);
}
.navigation__button {
display: block;
position: relative;
cursor: pointer;
overflow: hidden;
}
.navigation__button--burger {
width: 34px;
height: 26px;
background-repeat: no-repeat;
background-position: center;
background-image: url("data:image/svg+xml,%3Csvg viewBox=%270 0 34 26%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Crect y=%2722%27 width=%2734%27 height=%274%27 fill=%27%23000000%27/%3E%3Crect y=%2711%27 width=%2734%27 height=%274%27 fill=%27%23000000%27/%3E%3Crect width=%2734%27 height=%274%27 fill=%27%23000000%27/%3E%3C/svg%3E");
}
.navigation__button--close {
width: 27px;
height: 27px;
background-repeat: no-repeat;
background-position: center;
background-image: url("data:image/svg+xml,%3Csvg viewBox=%270 0 27 27%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Crect x=%273.72792%27 y=%270.899495%27 width=%2732%27 height=%274%27 transform=%27rotate%2845 3.72792 0.899495%29%27 fill=%27%23000000%27/%3E%3Crect x=%270.957062%27 y=%2723.5845%27 width=%2732%27 height=%274%27 transform=%27rotate%28-45 0.957062 23.5845%29%27 fill=%27%23000000%27/%3E%3C/svg%3E");
}
.navigation__panel {
width: 100%;
height: 100%;
max-width: 400px;
background-color: rgba(255, 255, 255, 0.95);
}
.navigation__list {
display: block;
}
.navigation__item {
list-style: none;
}
.navigation {
display: inline-block;
}
.navigation__panel {
display: -ms-flexbox;
display: flex;
-ms-flex-direction: column;
flex-direction: column;
}
.navigation {
font-size: 1.125em;
}
@supports ((-webkit-backdrop-filter: ) or (backdrop-filter: )) {
.navigation__panel {
-webkit-backdrop-filter: blur(2px);
backdrop-filter: blur(2px);
}
}
.navigation__list {
padding: 0;
margin: 0;
overflow-x: hidden;
overflow-y: auto;
}
.navigation__item {
padding: 0;
margin: 0;
}
.navigation__link {
display: block;
padding: 16px 8px;
background-color: #f9f9f9;
color: #333;
font-weight: bold;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}
.navigation__link:hover {
background-color: #f1f1f1;
color: #000;
}
.navigation__button--close {
margin: 8px;
float: right;
}
@media (min-width: 756px) {
.navigation {
display: block;
}
.navigation__panel {
position: static;
display: block;
width: auto;
max-width: none;
height: auto;
background: transparent;
opacity: 1;
-ms-transform: none;
transform: none;
transition: none;
visibility: visible;
}
.navigation__list {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: end;
justify-content: flex-end;
}
@supports ((-webkit-backdrop-filter: ) or (backdrop-filter: )) {
.navigation__panel {
-webkit-backdrop-filter: none;
backdrop-filter: none;
}
}
.navigation__list {
padding: 0;
margin: 0;
}
.navigation__link {
padding: 0;
}
.navigation__button {
display: none;
}
}