Galería interactiva básica en Vanilla JavaScript

Tiempo de ejecución: 30 minutos. Empezar

Autor: joe-ashworth
Views Total: 1,548
Sitio oficial: Ir a la web
Actualizado: January 30, 2018
Licencia: MIT

Vista prévia

Galería interactiva básica en Vanilla JavaScript

Descripción

Un script ligero para crear una galería interactiva en la que puede navegar entre las imágenes haciendo clic en las miniaturas.

Funcionamiento

Inserte miniaturas y la primera imagen en la Galería como estas:

<div class="container">

<div class="panel-main">


<img src="https://picsum.photos/1920/1200?image=797" id="selected">

</div>


<div class="thumbs">


<img src="https://picsum.photos/1920/1200?image=797">


<img src="https://picsum.photos/1920/1200?image=777">


<img src="https://picsum.photos/1920/1200?image=755">


<img src="https://picsum.photos/1920/1200?image=838">


<img src="https://picsum.photos/1920/1200?image=839">

</div>
</div>

Estilo de la galería y hacer que sea sensible usando CSS Flexbox:

.container {

max-width: 800px;

margin: auto;

border: white solid 5px;

background-color: white;
}

.panel-main img, .thumbs img {

width: 100%;

height: auto;
}

.thumbs {

display: grid;

grid-template-columns: repeat(5, 1fr);

grid-gap: 5px;
}

Aplique una animación de desvanecimiento a la Galería cuando cambie entre imágenes.

@keyframes
 fadeIn {
to {
 opacity: 1;
}
}

.fade-in {

opacity: 0;

animation: fadeIn 0.5s ease-in 1 forwards;
}

El JavaScript para activar la galería.

const current = document.querySelector("#selected");
const thumbs = document.querySelectorAll(".thumbs img");
const opacity = 0.5;

// Set opacity of first image
thumbs[0].style.opacity = opacity;

thumbs.forEach(img => img.addEventListener("click", imgActivate));

function imgActivate(e) {

// Reset opacity on all thumbs

thumbs.forEach(img => (img.style.opacity = 1));


// Change current image to source of clicked image

current.src = e.target.src;


// Add fadeIn class

current.classList.add("fade-in");


// Remove fadeIn class after animation time elapsed

setTimeout(() => current.classList.remove("fade-in"), 500);


// Change opacity to variable value

e.target.style.opacity = opacity;
}

Te puede interesar: