Empezar Cómo hacer un slider
Cómo hacer un slider
Construye un slider de imágenes paso a paso: primero solo con HTML y CSS, después con controles en JavaScript.
Video de referencia
El video de divcode enseña a construir un slider usando solo HTML y CSS, sin plugins ni JavaScript. Míralo primero y después sigue los pasos escritos.
Paso a paso
-
Prepara las carpetas e imágenes
Crea una carpeta del proyecto con
index.html,styles.cssy una carpetaimg. Usa imágenes del mismo tamaño y proporción (por ejemplo 1600 × 900 px). Si tienen tamaños distintos, el slider "salta". -
Escribe la estructura HTML
Un contenedor que sirve de ventana y, adentro, una lista con una imagen por elemento.
<div class="slider-css"> <ul> <li><img src="img/cafetal.jpg" alt="Montañas cafeteras"></li> <li><img src="img/ciudad.jpg" alt="Ciudad al atardecer"></li> <li><img src="img/playa.jpg" alt="Playa tropical"></li> </ul> </div> -
Convierte el contenedor en una ventana
overflow: hiddenesconde todo lo que se sale del contenedor. Así solo se ve una imagen a la vez..slider-css { width: 100%; max-width: 900px; margin: auto; overflow: hidden; border-radius: 12px; } -
Pon las imágenes en fila
La lista mide 300% porque hay 3 imágenes. Cada elemento mide un tercio de la lista, que es exactamente el ancho de la ventana.
.slider-css ul { display: flex; width: 300%; /* 3 imágenes x 100% */ margin: 0; padding: 0; animation: deslizar 15s infinite alternate ease-in-out; } .slider-css li { list-style: none; width: calc(100% / 3); /* una imagen = un tercio de la fila */ } .slider-css img { width: 100%; display: block; aspect-ratio: 16 / 9; object-fit: cover; } -
Anima el movimiento con @keyframes
La fila se desplaza a la izquierda un tercio cada vez. Los porcentajes repetidos (0% y 28%, por ejemplo) son las pausas: la imagen se queda quieta un rato antes de moverse.
@keyframes deslizar { 0%, 28% { transform: translateX(0); } 36%, 64% { transform: translateX(-33.333%); } 72%, 100% { transform: translateX(-66.666%); } } /* Accesibilidad: respeta a quien desactivó las animaciones */ @media (prefers-reduced-motion: reduce) { .slider-css ul { animation: none; } } -
Mira el resultado
Este es el código de arriba funcionando:
-
Reto: agrega controles con JavaScript
El slider de solo CSS no se puede pausar ni controlar. Para tener flechas, puntos y pausa (como la cabecera de esta página) se necesita un poco de JavaScript. La idea central es mover la pista según un índice:
const pista = document.querySelector('.slides'); const total = pista.children.length; let actual = 0; function irA(n) { actual = (n + total) % total; // da la vuelta al llegar al final pista.style.transform = `translateX(-${actual * 100}%)`; } document.querySelector('.next').onclick = () => irA(actual + 1); document.querySelector('.prev').onclick = () => irA(actual - 1); setInterval(() => irA(actual + 1), 5000);El código completo de la demo 1 está en
js/main.jsde este proyecto, comentado línea a línea.
Antes de publicar
Lista de verificación antes de publicar
- Las imágenes están comprimidas (idealmente menos de 300 KB cada una).
- Todas las imágenes tienen texto alternativo (
alt). - El texto es legible sobre la imagen (hay contraste o una capa oscura).
- Se ve bien en celular.
- El usuario puede pausar o controlar el movimiento.


