Optimiza tus Hojas de Estilos con BEM: Guía de Buenas Prácticas y Ejemplos

GeokymDotCom
3 min readSep 26, 2023

--

El desarrollo web moderno es un campo en constante evolución y con la creciente complejidad de las aplicaciones web, la gestión del CSS se ha convertido en un desafío crucial. Una de las metodologías más efectivas para abordar este desafío es BEM, que significa “Block Element Modifier”. En este artículo, exploraremos qué es BEM y compartiremos algunas buenas prácticas para una gestión efectiva del CSS con ejemplos ilustrativos.

¿Qué es BEM?

BEM es una metodología de nomenclatura y organización de clases CSS que se utiliza para crear estilos de manera modular y mantenible en aplicaciones web. La principal idea detrás de BEM es dividir la interfaz de usuario en componentes autónomos y definir una convención de nomenclatura clara para las clases de CSS que se aplican a esos componentes.

Bloque (Block)

El bloque es el componente principal y autónomo que encapsula una pieza de interfaz de usuario. Se representa mediante un nombre de clase CSS único y descriptivo. Veamos un ejemplo:

/* Clase de bloque para un botón */
.button {
/* Estilos para el bloque */
}

Elemento (Element)

Los elementos son partes más pequeñas y específicas de un bloque que no tienen significado por sí mismos y están contenidos dentro de un bloque. Los nombres de clase para elementos se construyen agregando el nombre del bloque, dos guiones bajos y el nombre del elemento. Ejemplo:

/* Clase de elemento para el texto dentro de un botón */
.button__text {
/* Estilos para el elemento */
}

Modificador (Modifier)

Los modificadores son variantes o estados de un bloque o elemento que permiten ajustar su apariencia o comportamiento. Los nombres de clase para modificadores se construyen agregando el nombre del bloque o elemento, dos guiones medios y el nombre del modificador. Ejemplo:

/* Clase de modificador para un botón en estado primario */
.button--primary {
/* Estilos para el modificador */
}

Buenas Prácticas para una Gestión Efectiva del CSS con BEM

Mantén la estructura BEM simple y coherente: Evita anidar clases BEM excesivamente. Una estructura clara y poco profunda facilita la lectura y el mantenimiento del código. No abrumes tu HTML con clases innecesarias.

Utiliza abstracciones para estilos comunes: Crea clases BEM reutilizables para estilos que se aplican a menudo en diferentes partes de tu sitio. Esto fomenta la coherencia y reduce la duplicación de código.

Evita la especificidad excesiva: La nomenclatura BEM ayuda a mantener la especificidad bajo control. Evita el uso de !important y estilos demasiado específicos que puedan entrar en conflicto.

Documenta tu código: Usa comentarios para explicar la función de tus bloques, elementos y modificadores. Esto facilita la colaboración y el mantenimiento a largo plazo.

/* Bloque de encabezado principal */
.header {
/* Estilos para el bloque de encabezado */
}

Aplicación consistente de modificadores: Define reglas claras para el uso de modificadores. Por ejemplo, decide si los modificadores deben aplicarse a bloques o elementos y sé coherente en todo el proyecto.

Prueba y refactoriza: A medida que tu proyecto crezca, revisa y refactoriza regularmente tu CSS. Elimina clases no utilizadas y busca formas de optimizar el rendimiento.

Considera la extensibilidad: Diseña tu código BEM de manera que sea fácil agregar nuevas funcionalidades o estilos sin afectar el código existente.

Conclusión

BEM es una metodología poderosa que puede mejorar significativamente la mantenibilidad del CSS en proyectos web. Siguiendo estas buenas prácticas y utilizando ejemplos concretos, puedes aprovechar al máximo BEM y mantener tu código CSS organizado y fácil de mantener a medida que tu proyecto crece. La gestión efectiva del CSS es esencial para el éxito a largo plazo de cualquier proyecto web. ¡Así que adelante y comienza a aplicar BEM en tu próximo proyecto!

Website: https://getbem.com/

Por: Gabriel Burgos

--

--

GeokymDotCom

Fullstack developer especializado en Frontend. Apasionado por el desarrollo web, los videojuegos y la vida al aire libre.