Menu
Coddy logo textTech

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.

challenge icon

Desafío

Fácil

Tu tarea:

  1. 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>
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de JavaScript in Action

Practica por tu cuenta: Playground de Web