Galería de expansión basada en Flexbox con vanilla JavaScript

Tiempo de ejecución: 30 minutos. Empezar

Autor: miuel
Views Total: 1,818
Sitio oficial: Ir a la web
Actualizado: May 22, 2017
Licencia: MIT

Vista prévia

Galería de expansión basada en Flexbox con vanilla JavaScript

Descripción

Una galería de imágenes en expansión de pantalla completa de gran capacidad de respuesta construida con CSS3 Flexbox y Vanilla JavaScript.

Funcionamiento

Cree el código HTML para la galería en expansión.

<div class="panels">

<div class="panel panel1">


<p>Hey</p>


<p>Let's</p>


<p>Dance</p>

</div>

<div class="panel panel2">


<p>Give</p>


<p>Take</p>


<p>Receive</p>

</div>

<div class="panel panel3">


<p>Experience</p>


<p>It</p>


<p>Today</p>

</div>

<div class="panel panel4">


<p>Give</p>


<p>All</p>


<p>You can</p>

</div>

<div class="panel panel5">


<p>Life</p>


<p>In</p>


<p>Motion</p>

</div>
</div>

Los estilos primarios CSS/CSS3.

.panels {

min-height:100vh;

overflow: hidden;

display: flex;
}

.panel {

background:#6B0F9C;

box-shadow:inset 0 0 0 5px rgba(255,255,255,0.1);

color:white;

text-align: center;

align-items:center;

/* Safari transitionend event.propertyName === flex */

/* Chrome + FF transitionend event.propertyName === flex-grow */

transition:


font-size 0.7s cubic-bezier(0.61,-0.19, 0.7,-0.11),


flex 0.7s cubic-bezier(0.61,-0.19, 0.7,-0.11),


background 0.2s;

font-size: 20px;

background-size:cover;

background-position:center;

flex: 1;

justify-content: center;

align-items: center;

display: flex;

 flex-direction: column;
}

.panel > * {

margin:0;

width: 100%;

transition:transform 0.5s;

flex: 1 0 auto;

display: flex;

justify-content: center;

align-items: center;



}

.panel > *:first-child { transform: translateY(-100%); }
.panel.open-active > *:first-child { transform: translateY(0%); }
.panel > *:last-child { transform: translateY(100%); }
.panel.open-active > *:last-child { transform: translateY(0%); }

.panel p {

text-transform: uppercase;

font-family: 'Roboto', cursive;

text-shadow:0 0 4px rgba(0, 0, 0, 0.72), 0 0 14px rgba(0, 0, 0, 0.45);

font-size: 2em;
}
.panel p:nth-child(2) {

font-size: 4em;
}

.panel.open {

flex: 5;

font-size:40px;
}

Añada sus propias imágenes de fondo a los paneles.

.panel1 { background-image:url(1.jpg);}
.panel2 { background-image:url(2.jpg);}
.panel3 { background-image:url(3.jpg);}
.panel4 { background-image:url(4.jpg);}
.panel5 { background-image:url(5.jpg);}

El código JavaScript para alternar los estilos CSS al hacer clic en los paneles.

const panels = document.querySelectorAll('.panel');

function toggleOpen() {

this.classList.toggle('open');

// console.log('abro/cierro')
}

 function toggleActive(e) {


//console.log(e)


if(e.propertyName.includes('flex')) {


this.classList.toggle('open-active')


}
 }



 panels.forEach(function(panel) {

panel.addEventListener('click', toggleOpen)

panel.addEventListener('transitionend', toggleActive)
});

Te puede interesar: