Capítulo 4: Estilos CSS y Clases
Manipular la apariencia de los elementos es una de las tareas más comunes en JavaScript frontend. Hay dos formas principales: modificar estilos directamente (inline) o gestionar clases CSS. Existe una forma profesional y una forma "rápida"; aquí aprenderás ambas.
4.1. La propiedad style: Estilos en línea
style: Estilos en líneaCada elemento DOM tiene una propiedad .style que es un objeto. Puedes usarla para añadir estilos inline (en el atributo style="" del HTML).
const caja = document.querySelector('.box');
// Escribir estilos
caja.style.backgroundColor = 'red';
caja.style.fontSize = '20px';
caja.style.marginTop = '10px';
caja.style.borderRadius = '8px';
// Leer estilos inline
console.log(caja.style.backgroundColor); // "red"
// Borrar un estilo inline (vuelve al valor de la hoja de estilos)
caja.style.display = '';Desventajas de los estilos inline:
Alta especificidad (sobrescriben casi todo tu CSS)
Ensucian el HTML
Difíciles de mantener
Úsalos solo para valores calculados dinámicamente: coordenadas de una animación, colores elegidos por el usuario, dimensiones calculadas.
4.2. getComputedStyle(): Leer estilos finales
getComputedStyle(): Leer estilos finalesLa propiedad .style solo lee los estilos inline. No puede leer los estilos definidos en tu hoja .css.
Para saber el estilo real y final de un elemento (después de aplicar cascada CSS, herencia, especificidad), usa window.getComputedStyle().
4.3. classList: Gestión profesional de clases
classList: Gestión profesional de clasesLa mejor práctica en desarrollo frontend es definir tus estilos en clases CSS y usar JavaScript solo para activar o desactivar esas clases.
La propiedad .className existe pero es un string incómodo de manejar. Lo moderno y correcto es usar .classList.
Métodos de classList:
add('clase'): Añade la clase (si ya existe, no la duplica).remove('clase'): Elimina la clase (si no existe, no falla).toggle('clase'): Si existe la quita, si no existe la pone. Ideal para interruptores.contains('clase'): Devuelvetrueofalse. Útil para condicionales.replace('vieja', 'nueva'): Reemplaza una clase por otra.
4.4. Manipulación de variables CSS (Custom Properties)
Las variables CSS (también llamadas "Custom Properties") son extremadamente potentes combinadas con JavaScript. Se definen en CSS y se accede a ellas desde JS.
CSS:
JavaScript:
Resumen del Capítulo
Para modificar la apariencia de elementos:
Si es un cambio de estado (activo/inactivo, visible/oculto, modo oscuro/claro) → Usa clases con
classListSi es un valor calculado dinámicamente (posición X/Y, tamaño dinámico) → Usa style
Para leer estilos CSS aplicados → Usa
getComputedStylePara efectos dinámicos complejos → Usa variables CSS
💡 Conceptos Clave:
.style: Escribir estilos inline (camelCase)getComputedStyle(): Leer estilos CSS finales aplicadosclassList.add(): Añadir clase CSSclassList.remove(): Eliminar clase CSSclassList.toggle(): Alternar clase (activar/desactivar)classList.contains(): Verificar si tiene una claseVariables CSS (--propiedad): Propiedades dinámicas desde JavaScript
Separación de responsabilidades: CSS para estilos, JS para lógica
🤔 Preguntas de Reflexión:
¿Por qué es mejor manipular clases que estilos inline?
¿Cuál es la diferencia entre
.style.colorygetComputedStyle(elemento).color?¿Cómo implementarías un toggle de "modo oscuro" usando
classList?¿Qué ventaja tienen las variables CSS sobre los estilos inline?
¿Cuándo usarías
togglevsadden classList?Crea un ejemplo donde cambies dinamicamente el color de fondo usando una variable CSS.
Última actualización
¿Te fue útil?