Cambio de Tema Dinámico y Persistente en Aplicaciones Web
Clase 25 de 27 • Curso de JavaScript: Manipulación del DOM
Contenido del curso
- 6

Atributos y Propiedades en HTML y su Manipulación con JavaScript
07:39 - 7

Modificar texto en HTML con JavaScript
04:50 - 8

Modificar Estilos CSS con JavaScript: Propiedad Style y ClassName
11:30 - 9

Uso de classList para Manipular Clases en Elementos HTML
07:38 - 10

Manipulación del DOM con innerHTML e InsertAdjacentHTML
09:47 - 11

Agregar elementos HTML sin reemplazar contenido existente
05:18 - 12

Creación y Manipulación de Elementos DOM con createElement
13:28 - 13

Eliminar Elementos del DOM con JavaScript: Métodos y Ejemplos
05:43 - 14

Clonación y Reemplazo de Elementos en JavaScript
12:47
- 15

Eventos y Flujo en Programación Web: Capturing y Bubbling
05:03 - 16

Manejo de Eventos en JavaScript: click, mouseOver y mouseOut
11:46 - 17

Manipulación de Eventos en JavaScript para Interacción de Elementos
07:35 - 18

Validación de Formularios con JavaScript: Prevenir Comportamiento por Defecto
10:06 - 19

Delegation Pattern en JavaScript: Mejora de Eventos Click en Listas
09:30
- 20

Creación de un Task Manager con Persistencia usando Local Storage
09:01 - 21

Interactividad en Botones de Tareas: Borrar y Editar en JavaScript
13:37 - 22

Persistencia de Datos con Local Storage en Tareas Web
15:17 - 23

Guardado y edición de tareas en local storage con JavaScript
10:59 - 24

Manejo de Errores en Local Storage para Tareas Dinámicas
03:24 - 25

Cambio de Tema Dinámico y Persistente en Aplicaciones Web
07:18 - 26

Creación de Páginas Web Dinámicas con JavaScript
01:28
¿Cómo podemos implementar un botón para cambiar el tema de una aplicación?
A menudo queremos ofrecer a los usuarios la opción de personalizar la apariencia de nuestra aplicación web. Una de las funcionalidades favoritas es la de cambiar el tema entre claro (light) y oscuro (dark). Este tutorial te llevará por el proceso de implementación de un botón de alternancia de tema que recuerda la elección del usuario incluso al actualizar la página.
Preparación del entorno
Para empezar, necesitamos seleccionar el botón encargado de alternar el tema. Usaremos el método getElementById en document para obtener una referencia al botón de alternancia por su ID. Una vez tenemos la referencia, debemos agregar un evento que se dispare al hacer clic. Para ello, utilizamos addEventListener:
const tempToggleButton = document.getElementById('toggleButton');
tempToggleButton.addEventListener('click', () => {
document.body.classList.toggle('darkTheme');
});
Este sencillo fragmento de código permitirá que, al hacer clic en el botón, se agregue o quite la clase darkTheme del elemento body. De este modo, podremos ver el cambio visual en los estilos definidos para la clase darkTheme.
Implementación de la persistencia del tema
El siguiente paso es asegurarnos de que la preferencia del usuario se mantenga incluso después de recargar la página, algo vital para mejorar la experiencia del usuario. Para lograr la persistencia del tema, utilizaremos localStorage. Primero, validamos si el body contiene la clase darkTheme y almacenamos el resultado:
const theme = document.body.classList.contains('darkTheme') ? 'dark' : 'light';
localStorage.setItem('theme', theme);
Verificación del tema al cargar la página
Una vez almacenada la elección del usuario en localStorage, es importante que cada vez que la página cargue, verifiquemos este almacenamiento y ajustemos el tema en consecuencia. Podemos lograrlo con la siguiente validación al inicio de nuestro script:
const currentTheme = localStorage.getItem('theme');
if (currentTheme === 'dark') {
document.body.classList.add('darkTheme');
}
Con esta lógica, al recargar la página, el tema seleccionado se mantiene de acuerdo con el valor guardado en localStorage.
Probando y asegurando la funcionalidad
Para asegurarte de que todo funcione correctamente, realiza una última verificación asegurándote de alternar entre temas y de que esta selección resista los reinicios de sesión:
- Cambia al tema oscuro, verifica que
localStoragecontienetheme = dark. - Actualiza la página y verifica que el tema oscuro persista.
- Haz clic para volver al tema claro, comprueba que
localStorageahora tengatheme = light.
Consejos adicionales
- Revisa que todos los estilos CSS necesarios estén correctamente definidos para ambas clases de tema.
- Asegúrate de que los cambios de tema no interfieran con otros estilos visuales.
- Considera añadir animaciones suaves para mejorar la transición entre temas.
La implementación efectiva y la persistencia del tema mejoran la accesibilidad y personalización de tu aplicación. ¡Sigue aprendiendo y mejorando la experiencia de tus usuarios!