Contenido del curso
BEM
Atomic Design
OOCSS
SMACSS
ITCSS
TailwindCSS
Metodología BEM en CSS explicada
Resumen
La metodología BEM (bloque, elemento, modificador) es una de las convenciones de nomenclatura más usadas para escribir CSS limpio, mantenible y escalable. Si trabajas con HTML y CSS y quieres que tu código se lea fácil, esta guía te muestra cómo funciona BEM con ejemplos prácticos, incluyendo una analogía con el cohete Falcon 9.
¿Qué es BEM y cómo funciona en CSS?
BEM es el acrónimo de tres piezas que ordenan tu código: bloque, elemento y modificador. Cada pieza cumple un rol distinto y juntas forman una convención de nombres que cualquier persona del equipo puede leer sin perderse [0:14].
El bloque es el contenedor principal, esa estructura grande que vive por sí sola. El elemento son las partes internas que dependen del bloque. Y el modificador describe variaciones o estados, tanto del bloque como del elemento [2:01].
¿Qué significa BEM en desarrollo web? Es una metodología de nomenclatura para CSS que separa tu código en bloques (contenedores), elementos (partes internas) y modificadores (variaciones o estados).
¿Cómo se aplica BEM con la analogía del Falcon 9?
Imagina el Falcon 9 como tu pieza de código. El cohete completo es el bloque. La cabecita superior, que puede ser fairing o Dragon, representa al modificador porque son variaciones de esa misma parte. Y piezas como second stage o inner stage son los elementos que componen al cohete [2:42].
Llevado a HTML y CSS, un bloque puede ser una card, un botón, un formulario, un navbar o un footer. Los elementos serían íconos, textos, ítems de lista, imágenes o inputs. Los modificadores se relacionan con pseudoclases o estados: activo, inactivo, hover, seleccionado, rojo, verde [3:48].
¿Cómo escribir clases con la convención BEM?
La nomenclatura sigue un patrón muy específico que conviene memorizar. Los guiones bajos dobles separan el bloque del elemento, y los guiones medios dobles separan al bloque o al elemento de su modificador [8:09].
Las combinaciones más comunes son estas:
bloque__elementopara nombrar partes internas.bloque--modificadorpara variaciones del bloque.elemento--modificadorpara variaciones de un elemento.bloque__elemento--modificadorcuando mezclas los tres.
Aplicado al Falcon 9, tu HTML tendría una clase principal falcon-9 para el cohete, falcon-9--dragon cuando uses la variación con Dragon, y por dentro elementos como falcon-9__stage. En un caso real, un botón se vería así:
html <button class="button button--active"> <span class="button__icon"></span> <span class="button__text">Enviar</span> </button>
¿Puedes modificar la convención de guiones en BEM?
Sí, BEM es flexible. Puedes usar un solo guion medio para el modificador o jugar con la cantidad de guiones, siempre que respetes una regla de oro: sé consistente dentro del proyecto. Si trabajas en equipo, todos deben usar la misma forma de escritura para que la nomenclatura no se rompa [9:35].
¿Qué separan los guiones en BEM? Los guiones bajos (
__) separan el bloque del elemento. Los guiones medios (--) separan al bloque o elemento de su modificador.
¿Por qué usar BEM en proyectos reales?
A primera vista, escribir card__title--highlighted se siente más engorroso que un simple title. Pero el valor de BEM aparece cuando los proyectos crecen y el HTML deja de ser pequeño [10:36].
Estas son las razones para adoptar la metodología:
- Legibilidad: al leer una clase entiendes de inmediato qué hace y a qué bloque pertenece.
- Mantenibilidad y escalabilidad: tu CSS se mantiene limpio aunque el proyecto crezca.
- Modularidad: organizas tus estilos en módulos independientes en lugar de un mar de CSS gigante.
- Sin anidamientos profundos: evitas selectores dependientes unos de otros, alineándote con principios como SOLID, DRY e Immutability [12:00].
Esa modularidad se nota cuando combinas BEM con un preprocesador como SASS, donde puedes encapsular bloques completos en archivos pequeños y reutilizables.
¿Para qué tipo de proyectos sirve BEM?
Funciona en proyectos pequeños, pero brilla en estructuras grandes con muchos componentes. Cuando un card tiene cinco elementos internos y tres estados distintos, BEM evita que tu CSS se convierta en una telaraña imposible de mantener.
Ahora te toca a ti: escoge un objeto que te guste, identifica cuál sería el bloque, cuáles los elementos y cuáles los modificadores, y compártelo en los comentarios. Si te animas a escribir el HTML con la convención BEM, mucho mejor.