Indicadores de carga
Parte de la sección JavaScript in Action del Journey de HTML de Coddy — lección 10 de 27.
Los indicadores de carga son pequeños elementos visuales (como spinners o animaciones) que permiten a los usuarios saber que algo está sucediendo en segundo plano (al enviar un formulario o cargar datos). Mejoran la experiencia del usuario al mostrar una respuesta en lugar de dejar al usuario con la duda.
Primero, agrega este HTML a tu página:
<button id="loadBtn">Load Data</button>
<div id="loading-spinner" class="spinner-hidden">
<div class="spinner"></div>
</div>Luego, añade CSS para dar estilo al elemento de modo que parezca una rueda, y usa keyframes para que siga girando indefinidamente. También usamos una clase .hidden para mantener el spinner invisible cuando sea necesario.
.spinner {
width: 40px;
height: 40px;
border: 4px solid #f3f3f3;
border-top: 4px solid #3498db;
border-radius: 50%;
animation: spin 1s linear infinite;
}
.hidden {
display: none;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}Ahora, añade JavaScript para mostrar/ocultar el spinner:
const loadBtn = document.getElementById("loadBtn");
const spinner = document.getElementById("spinner");
loadBtn.addEventListener("click", function () {
// Mostrar el spinner
spinner.classList.remove("hidden");
// Después de 3 segundos, ocultar el spinner y mostrar una alerta
setTimeout(function () {
spinner.classList.add("hidden");
alert("Data loaded successfully!");
}, 3000);
});Cuando se hace clic en el botón, mostramos el spinner, esperamos 3 segundos, luego lo ocultamos y mostramos una alerta.
Desafío
FácilTu tarea:
- Dentro del escuchador de eventos click del botón, añade código para mostrar el spinner eliminando la clase "hidden". Coloca este código antes de la función setTimeout.
Pruébalo tú mismo
<!DOCTYPE html>
<html>
<head>
<title>Loading Spinner Example</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h1>Welcome to My Page</h1>
<p>Click the button below to simulate loading data.</p>
<button id="loadBtn">Load Data</button>
<div id="spinner" class="spinner hidden"></div>
</div>
<script src="script.js"></script>
</body>
</html>
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de JavaScript in Action
1Interactividad/Componentes de UI
PestañasAcordeón (expandir/contraer)Modal (abrir/cerrar)Menú desplegable7Animaciones y efectos
Transiciones CSSAnimar elementos al hacer scrollAnimaciones al hacer clic en botones