metodologia css bem entre guion bajo y alto

 Buena pregunta. La diferencia entre __ (doble guion bajo) y -- (doble guion alto) en BEM es clave para entender cómo se estructura la metodología.

📌 Diferencia entre __ y -- en BEM

  1. __ (doble guion bajo) → Se usa para elementos

    • Un elemento es una parte del bloque, no puede existir sin él.
    • No tiene sentido por sí solo, siempre depende del bloque principal.
    • Ejemplo: Un botón (button) puede tener un ícono dentro (button__icon).
    css .button {} /* Bloque principal */
    .button__icon {} /* Elemento dentro del botón */
  2. -- (doble guion alto) → Se usa para modificadores

    • Un modificador cambia el aspecto o comportamiento del bloque o elemento.
    • Puede representar estados (activo, deshabilitado) o variaciones (color, tamaño).
    • Ejemplo: Un botón puede tener una versión más grande (button--large).
    css .button {} /* Bloque principal */
    .button--large {} /* Modificador del botón */

🔍 Ejemplo práctico con BEM

Imaginemos un botón que tiene un ícono y puede ser grande o pequeño.

css
.button {} /* Bloque principal */
.button__icon {} /* Elemento (el icono dentro del botón) */ .button--large {} /* Modificador (versión grande del botón) */ .button--disabled {} /* Modificador (botón deshabilitado) */

Ejemplo en HTML:

html
<button class="button button--large">
<span class="button__icon">🔍</span> Buscar </button>

🤔 ¿Por qué button__icon no usa --icon?

Porque button__icon es un elemento dentro de button, mientras que --large es una modificación del propio button.

🔹 Mal uso:

css .button--icon {} /* ❌ Incorrecto, icon no es un modificador, es un elemento */

🔹 Buen uso:

css .button__icon {} /* ✅ Correcto, el icono es un elemento dentro del botón */

🔹 Para modificar el icono:
Si quisiéramos un icono más grande dentro de un botón grande:

css
.button--large .button__icon {
font-size: 20px; }

🚀 Resumen clave

SímboloUsoEjemplo
BloqueComponente principal.button {}
Elemento (__ )Parte del bloque.button__icon {}
Modificador (-- )Variante del bloque o elemento.button--large {}

BEM ayuda a que el código sea más fácil de mantener y entender, porque separa estructura (bloque), contenido (elementos) y estilos opcionales (modificadores).

Comentarios

Entradas más populares de este blog

simulacion de oferta de trabajo

seccion hero, que es en frontend?

Flexbox clase 1