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?

¿Te resulta útil?

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