Barra lateral elástica de navegación con CSS3 y JavaScript

Tiempo de ejecución: 30 minutos. Empezar

Autor: Long
Views Total: 1,600
Sitio oficial: Ir a la web
Actualizado: March 8, 2018
Licencia: MIT

Vista prévia

Barra lateral elástica de navegación con CSS3 y JavaScript

Descripción

Un menú de navegación fuera de lienzo de la barra lateral de lujo que aparece con un efecto de animación elástica basado en CSS3 y un poco de JavaScript.

Funcionamiento

Cree la navegación de barra lateral.

<div id="nav" class="navigation">

<div class="navigation__inner">


<!-- Navigation Content Here -->

</div>
</div>

Cree un botón de desencadenador para abrir/cerrar la navegación de la barra lateral.

<button id="show">Toggle Menu</button>

Los estilos primarios CSS/CSS3.

.navigation {

position: fixed;

width: 300px;

height: 100%;

top: 0;

overflow-y: auto;

overflow-x: hidden;

opacity: 0;

visibility: hidden;

z-index: 99;

-webkit-transition-delay: 300ms;

transition-delay: 300ms;

left: 0;
}

.navigation.active {

opacity: 1;

visibility: visible;

-webkit-transition-delay: 0s;

transition-delay: 0s;
}

.navigation.active .navigation__inner {

background-color: #7c7fe0;

-webkit-transform: translate(0, 0);

transform: translate(0, 0);

-webkit-transition: background-color 0s linear 599ms, -webkit-transform 300ms linear;

transition: background-color 0s linear 599ms, -webkit-transform 300ms linear;

transition: transform 300ms linear, background-color 0s linear 599ms;

transition: transform 300ms linear, background-color 0s linear 599ms, -webkit-transform 300ms linear;
}

.navigation.active .navigation__inner:after {

width: 300%;

border-radius: 50%;

-webkit-animation: elastic 150ms ease 300.5ms both;

animation: elastic 150ms ease 300.5ms both;
}

.navigation__inner {

position: absolute;

width: 100%;

height: 100%;

top: 0;

left: 0;

overflow: hidden;

z-index: 999999;

-webkit-transform: translate(-100%, 0);

transform: translate(-100%, 0);

-webkit-transition: background-color 0s linear 300ms, -webkit-transform 300ms linear;

transition: background-color 0s linear 300ms, -webkit-transform 300ms linear;

transition: transform 300ms linear, background-color 0s linear 300ms;

transition: transform 300ms linear, background-color 0s linear 300ms, -webkit-transform 300ms linear;
}

.navigation__inner:after {

content: '';

position: absolute;

width: 0;

height: 100%;

top: 0;

right: 0;

background-color: #7c7fe0;

border-radius: 50%;

z-index: -1;

-webkit-transition: all 300ms linear;

transition: all 300ms linear;
}

Cree el efecto elástico en los fotogramas clave de CSS3.

@-webkit-keyframes
 elastic {
0% {
 border-radius: 50%;
}
 45% {
 border-radius: 0;
}
 65% {
 border-top-right-radius: 40px 50%;
 border-bottom-right-radius: 40px 50%;
}
 80% {
 border-radius: 0;
}
 90% {
 border-top-right-radius: 20px 50%;
 border-bottom-right-radius: 20px 50%;
}
 100% {
 border-radius: 0;
}
}

@keyframes
 elastic {
0% {
 border-radius: 50%;
}
 45% {
 border-radius: 0;
}
 65% {
 border-top-right-radius: 40px 50%;
 border-bottom-right-radius: 40px 50%;
}
 80% {
 border-radius: 0;
}
 90% {
 border-top-right-radius: 20px 50%;
 border-bottom-right-radius: 20px 50%;
}
 100% {
 border-radius: 0;
}
}

Utilice JavaScript sin formato para alternar las clases CSS en función del estado actual.

var btn = document.getElementById('show');
var nav = document.getElementById('nav');

btn.addEventListener('click', function() {


nav.classList.toggle('active');
});

Te puede interesar: