javascript-modificar-estilos-css-dom

Modificar estilos y CSS del DOM con JavaScript

De igual forma que podemos modificar los elementos y estructura del DOM, también podemos cambiar sus estilos.

La manipulación de estilos en JavaScript puede hacerse a través de dos principales métodos:

  • Modificación directa del estilo: Cambiando los valores de estilo de los elementos.
  • Manipulación de clases CSS: Agregando, eliminando o alternando clases que definen los estilos.

Modificación directa de estilos CSS

Con JavaScript, puedes cambiar directamente las propiedades CSS de un elemento. Esto se realiza utilizando la propiedad style del elemento y asignando valores a las propiedades CSS que desees modificar.

ComandoDescripción
elemento.style.propiedadCSS = 'valor'Cambia el estilo directamente.

Veamos algunos ejemplos

Puedes cambiar las propiedades de color y fondo utilizando las propiedades color y backgroundColor.

elemento.style.color = 'red';
elemento.style.backgroundColor = 'yellow';

Propiedades como fontSize, width, height, margin, y padding permiten ajustar el tamaño y el espaciado de los elementos.

elemento.style.fontSize = '18px';
elemento.style.width = '200px';
elemento.style.height = '100px';
elemento.style.margin = '10px';
elemento.style.padding = '15px';

Puedes añadir bordes y sombras utilizando propiedades como border, borderRadius, y boxShadow.

elemento.style.border = '2px solid black';
elemento.style.borderRadius = '5px';
elemento.style.boxShadow = '2px 2px 10px gray';

Manipulación de Clases CSS

La manipulación de clases es una técnica más flexible y organizada que evita llenar el código con estilos en línea.

Usamos las propiedades classList del elemento para agregar, eliminar o alternar clases.

ComandoDescripción
elemento.classList.add('clase')Agrega una clase al elemento.
elemento.classList.remove('clase')Elimina una clase del elemento.
elemento.classList.toggle('clase')Alterna una clase en el elemento.

add()

El método add() permite añadir una o más clases a un elemento, asegurándose de que no estén duplicadas. Esto es útil para aplicar estilos o indicar un estado específico de un elemento.

elemento.classList.add('activo');

En este ejemplo, se añade la clase activo al elemento, lo que podría, por ejemplo, cambiar su color o hacerlo visible según los estilos definidos en tu archivo CSS.

remove()

El método remove() elimina una o más clases de un elemento. Es una forma práctica de revertir un estado visual o funcional previamente aplicado.

elemento.classList.remove('invisible');

Aquí, la clase invisible se elimina del elemento, probablemente haciendo que el elemento vuelva a ser visible en la página si esa clase controlaba su visibilidad.

toggle()

El método toggle() añade la clase si no está presente y la elimina si ya lo está. Esto es especialmente útil para crear interacciones dinámicas con un solo comando.

elemento.classList.toggle('resaltado');

Por ejemplo, este código podría alternar un estilo destacado en un botón al ser clicado, mejorando la experiencia del usuario con un comportamiento interactivo.

Uso de variables CSS

Otra forma de modificar el estilo de un elemento es modificar una variable CSS. Esta variable actuará de forma conjunta con las hojas CSS para dar formato al elemento.

ComandoDescripción
document.documentElement.style.setProperty('--variable', 'valor')Modifica dinámicamente el valor de una variable CSS personalizada.

Modificar variables con JavaScript:

document.documentElement.style.setProperty('--color-principal', 'lightcoral');

Definir variable en CSS:

:root {
    --color-principal: lightblue;
}

#miElemento {
    background-color: var(--color-principal);
}

Lectura de estilos computados

También podemos obtener el estilo actualmente aplicado a un elemento, incluyendo los estilos heredados o calculados por el navegador:

ComandoDescripción
window.getComputedStyle(elemento).propiedadObtiene el valor calculado de una propiedad.

Por ejemplo,

const estiloComputado = window.getComputedStyle(elemento);
console.log(estiloComputado.backgroundColor);

Aplicar transiciones y animaciones

También podemos usar JavaScript para aplicar transiciones y animaciones CSS.

Primero define las reglas en una hoja de estilos CSS y luego utiliza JavaScript para modificar las propiedades que desencadenan estas animaciones.

Por ejemplo para activar una transición,

Desencadenar transición con JavaScript

elemento.style.backgroundColor = 'blue';

Definir transición en CSS

#miElemento {
    transition: background-color 0.5s ease;
}