METODOLOGIA CSS BEM EXPLICADO

 

馃帹 ¿Qu茅 es el m茅todo BEM en CSS?

BEM es una metodolog铆a para nombrar y organizar clases en CSS que facilita la creaci贸n de componentes reutilizables y mantenibles. Su nombre proviene de las siglas Block, Element, Modifier, que representan los tres conceptos clave de esta metodolog铆a:

  1. Bloque: Un bloque es un componente independiente y reutilizable. Por ejemplo, un bot贸n, un men煤 o una tarjeta.

  2. Elemento: Un elemento es una parte de un bloque que no tiene sentido por s铆 solo. Por ejemplo, un t铆tulo dentro de una tarjeta o un 铆cono dentro de un bot贸n.

  3. Modificador: Un modificador es una variaci贸n de un bloque o elemento. Por ejemplo, un bot贸n deshabilitado o una tarjeta con un fondo oscuro.

La idea principal de BEM es evitar conflictos entre estilos y hacer que el c贸digo sea m谩s legible y escalable.


馃摑 Sintaxis de BEM

La sintaxis de BEM sigue esta estructura:

  • Bloque.bloque

  • Elemento.bloque__elemento

  • Modificador.bloque--modificador o .bloque__elemento--modificador

  • Guion simple (-): Se usa para separar palabras en nombres compuestos, como .tarjeta-de-producto o .tarjeta-de-producto__imagen-principal.


馃捇 Ejemplo pr谩ctico de BEM en c贸digo

Imaginemos que estamos creando una tarjeta de producto. Aqu铆 tienes c贸mo se ver铆a usando BEM con nombres en espa帽ol m谩s naturales:

HTML:

html
Copy
<div class="tarjeta-de-producto">
  <img class="tarjeta-de-producto__imagen" src="producto.jpg" alt="Producto">
  <h2 class="tarjeta-de-producto__titulo">Nombre del Producto</h2>
  <p class="tarjeta-de-producto__descripcion">Descripci贸n breve del producto.</p>
  <button class="tarjeta-de-producto__boton tarjeta-de-producto__boton--principal">Comprar</button>
  <button class="tarjeta-de-producto__boton tarjeta-de-producto__boton--deshabilitado">Agotado</button>
</div>

CSS:

css
Copy
/* Bloque: Tarjeta de Producto */
.tarjeta-de-producto {
  border: 1px solid #ccc;
  border-radius: 8px;
  padding: 16px;
  max-width: 300px;
}

/* Elemento: Imagen */
.tarjeta-de-producto__imagen {
  width: 100%;
  border-radius: 8px;
}

/* Elemento: T铆tulo */
.tarjeta-de-producto__titulo {
  font-size: 1.5rem;
  margin: 8px 0;
}

/* Elemento: Descripci贸n */
.tarjeta-de-producto__descripcion {
  font-size: 1rem;
  color: #666;
}

/* Elemento: Bot贸n */
.tarjeta-de-producto__boton {
  padding: 8px 16px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}

/* Modificador: Bot贸n principal */
.tarjeta-de-producto__boton--principal {
  background-color: blue;
  color: white;
}

/* Modificador: Bot贸n deshabilitado */
.tarjeta-de-producto__boton--deshabilitado {
  background-color: #ccc;
  color: #666;
  cursor: not-allowed;
}

馃殌 ¿Cu谩ndo usar un guion simple (-)?

El guion simple (-) se utiliza para separar palabras en nombres compuestos. Por ejemplo:

  • Bloque con nombre compuesto.tarjeta-de-producto (en lugar de .tarjetadeproducto).

  • Elemento con nombre compuesto.tarjeta-de-producto__imagen-principal (en lugar de .tarjeta-de-producto__imagenprincipal).

  • Modificador con nombre compuesto.tarjeta-de-producto__boton--tama帽o-grande (en lugar de .tarjeta-de-producto__boton--tama帽ogrande).

Esto mejora la legibilidad del c贸digo y hace que los nombres sean m谩s descriptivos y naturales en espa帽ol.


馃洜️ Ventajas de usar BEM

  1. Claridad: Los nombres de las clases son descriptivos y f谩ciles de entender.

  2. Reutilizaci贸n: Los bloques y elementos son independientes, lo que facilita su reutilizaci贸n en otros proyectos.

  3. Escalabilidad: Es m谩s f谩cil mantener y escalar el c贸digo, incluso en proyectos grandes.

  4. Evita conflictos: Al usar nombres 煤nicos, se reducen los conflictos entre estilos.


馃殌 Conclusi贸n

El m茅todo BEM es una excelente herramienta para organizar tus estilos CSS de manera eficiente. Te ayuda a escribir c贸digo m谩s limpio, modular y f谩cil de mantener. Recuerda:

  • Usa __ para elementos.

  • Usa -- para modificadores.

  • Usa - para separar palabras en nombres compuestos y que suenen naturales en espa帽ol.

¡An铆mate a probarlo en tu pr贸ximo proyecto! 馃殌

Comentarios

Entradas m谩s populares de este blog

simulacion de oferta de trabajo

Flexbox clase 1

reflexion del frontend