Saltar al contenido

Estilos y clases en JavaScript

Introducción a la manipulación de estilos y clases en JavaScript

Controlar dinámicamente el estilo y las clases de un elemento mediante JavaScript es esencial para las aplicaciones web modernas. Esta guía completa ofrece información detallada y ejemplos prácticos para manipular estilos y clases de manera efectiva.

Técnicas de JavaScript para el estilo dinámico

Manipulación directa de estilos

Para modificar el estilo de un elemento directamente a través de JavaScript, puedes usar la propiedad style. Aquí tienes un ejemplo de cómo cambiar el color de fondo y el tamaño de fuente de un párrafo:


html
<style>
  #myParagraph {
    color: white; /* Ensures text is readable on a blue background */
  }
</style>
<div id="myParagraph">This is a paragraph.</div>
<script>
document.getElementById("myParagraph").style.backgroundColor = "blue";
document.getElementById("myParagraph").style.fontSize = "16px";
</script>

Result

Este método ofrece un control sencillo, pero puede resultar engorroso para múltiples cambios de estilo.

Uso de style.cssText

Para aplicar múltiples cambios de estilo de manera eficiente, usa style.cssText:


html
<style>
  #myParagraph {
    padding: 5px;
    width: 200px;
    text-align: center;
  }
</style>
<div id="myParagraph">Another paragraph.</div>
<script>
document.getElementById("myParagraph").style.cssText = "background-color: blue; font-size: 16px; border: 1px solid black";
</script>

Result

Este enfoque consolida los cambios de estilo en una sola operación.

Manipulación dinámica de clases en JavaScript

Agregar y eliminar clases

El uso de la API classList facilita la manipulación de clases.

Agregar una clase


html
<style>
  .new-class {
    font-weight: bold;
    color: green;
  }
</style>
<div id="myDiv">Class manipulation</div>
<script>
document.getElementById("myDiv").classList.add("new-class");
</script>

Result

Eliminar una clase


html
<style>
  .existing-class {
    text-decoration: underline;
    color: red;
  }
</style>
<div id="myDiv" class="existing-class">Another manipulation example</div>
<script>
document.getElementById("myDiv").classList.remove("existing-class");
</script>

Result

Alternar una clase

La funcionalidad de alternancia es efectiva para cambiar estilos como los temas:


html
<style>
  .dark-mode {
    background-color: black;
    color: white;
  }
</style>
<button id="toggleButton">Toggle Dark Mode</button>
<script>
document.getElementById("toggleButton").addEventListener("click", function() {
  document.body.classList.toggle("dark-mode");
});
</script>

Result

Manejo de múltiples clases

Gestiona varias clases simultáneamente:


html
<style>
  .first-class { background-color: yellow; }
  .second-class { border: 2px dashed blue; }
  .third-class { display: none; }
  .fourth-class { font-size: 14px; }
</style>
<div id="myDiv">Multiple class handling</div>
<script>
document.getElementById("myDiv").classList.add("first-class", "second-class");
document.getElementById("myDiv").classList.remove("third-class", "fourth-class");
</script>

Result

Mejores prácticas para la integración de JavaScript y CSS

Mantenibilidad y reutilización

Separa la funcionalidad de JavaScript y el estilo CSS tanto como sea posible, utilizando clases para definir estilos y JavaScript para manipular estas clases.

Consideraciones de rendimiento

Opta por alternar clases en lugar de manipular estilos directamente para un mejor rendimiento, y utiliza transiciones CSS para animaciones con el fin de optimizar el procesamiento.

Conclusión

Dominar la manipulación de estilos y clases a través de JavaScript es clave para crear aplicaciones web responsivas y dinámicas. Al implementar las técnicas y mejores prácticas descritas en esta guía, los desarrolladores pueden garantizar que sus aplicaciones sean tanto efectivas como mantenibles. La práctica regular con estos métodos mantendrá a los desarrolladores a la vanguardia de las tendencias en desarrollo web.

Práctica

En JavaScript, ¿cuál de los siguientes métodos se puede usar para manipular el estilo de un elemento?

Vista previa dual-run — compárala con las rutas Symfony en producción.