Entendiendo el DOM
Manipulación del DOM con JavaScript y APIs
Entendiendo el DOM y su Manipulación con JavaScript
Diferencias entre el DOM y el objeto Window en JavaScript
Seleccionando y Accesando a Elementos del DOM
Selección de Elementos del DOM con JavaScript
Navegación Jerárquica del DOM en JavaScript
Manipulando Elementos del DOM
Atributos y Propiedades en HTML y su Manipulación con JavaScript
Modificar texto en HTML con JavaScript
Modificar Estilos CSS con JavaScript: Propiedad Style y ClassName
Uso de classList para Manipular Clases en Elementos HTML
Manipulación del DOM con innerHTML e InsertAdjacentHTML
Agregar elementos HTML sin reemplazar contenido existente
Creación y Manipulación de Elementos DOM con createElement
Eliminar Elementos del DOM con JavaScript: Métodos y Ejemplos
Clonación y Reemplazo de Elementos en JavaScript
Manipulando Eventos en el DOM
Eventos y Flujo en Programación Web: Capturing y Bubbling
Manejo de Eventos en JavaScript: click, mouseOver y mouseOut
Manipulación de Eventos en JavaScript para Interacción de Elementos
Validación de Formularios con JavaScript: Prevenir Comportamiento por Defecto
Delegation Pattern en JavaScript: Mejora de Eventos Click en Listas
Creando un Administrador de Tareas
Creación de un Task Manager con Persistencia usando Local Storage
Interactividad en Botones de Tareas: Borrar y Editar en JavaScript
Persistencia de Datos con Local Storage en Tareas Web
Guardado y edición de tareas en local storage con JavaScript
Manejo de Errores en Local Storage para Tareas Dinámicas
Cambio de Tema Dinámico y Persistente en Aplicaciones Web
Creación de Páginas Web Dinámicas con JavaScript
Asincronía en JavaScript
Programación Síncrona y Asíncrona en JavaScript
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
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.
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
.
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);
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
.
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:
localStorage
contiene theme = dark
.localStorage
ahora tenga theme = light
.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!
Aportes 7
Preguntas 0
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?