Aquí presento un ejemplo de cómo aplicar BEM (Block, Element, Modifier) en un caso de la vida real. Imaginemos que estás trabajando en el diseño de un sitio web para una tienda en línea que vende productos electrónicos. Vamos a aplicar BEM para estilizar una lista de productos y un botón de compra.
Supongamos que el código HTML para la lista de productos es el siguiente:
<ul class="products-list">
<li class="product">
<div class="product__image">
<img src="producto1.jpg" alt="Producto 1">
</div>
<div class="product__details">
<h3 class="product__title">Producto 1</h3>
<p class="product__description">Descripción del producto 1.</p>
<span class="product__price">$99.99</span>
<button class="product__buy-button">Comprar</button>
</div>
</li>
<!-- Otras listas de productos -->
</ul>
Ahora, apliquemos BEM para estilizar estos elementos:
- Block: El bloque más grande y significativo es “products-list”. Representa la lista de productos.
/* Estilos para el bloque "products-list" */
.products-list {
list-style: none;
margin: 0;
padding: 0;
}
- Element: Los elementos dentro del bloque “products-list” son “product”, “product__image”, “product__details”, “product__title”, “product__description” y “product__price”.
/* Estilos para el elemento "product" */
.product {
display: flex;
border: 1px solid #ccc;
margin-bottom: 20px;
}
/* Estilos para el elemento "product__image" */
.product__image {
flex: 1;
padding: 10px;
}
/* Estilos para el elemento "product__details" */
.product__details {
flex: 2;
padding: 10px;
}
/* Estilos para el elemento "product__title" */
.product__title {
font-size: 18px;
margin: 0;
margin-bottom: 5px;
}
/* Estilos para el elemento "product__description" */
.product__description {
margin: 0;
color: #555;
}
/* Estilos para el elemento "product__price" */
.product__price {
font-weight: bold;
}
- Modifier: Los modificadores cambian el aspecto o el comportamiento de un bloque o elemento. Por ejemplo, podríamos tener un modificador para el botón de compra cuando un producto está en oferta:
/* Estilos para el modificador "product__buy-button--on-sale" */
.product__buy-button--on-sale {
background-color: #ff9900;
color: #fff;
border: none;
cursor: pointer;
}
Ahora, en tu código HTML, puedes aplicar el modificador cuando sea necesario:
<button class="product__buy-button product__buy-button--on-sale">Comprar</button>
Recuerda que BEM es una metodología de nomenclatura para escribir CSS más estructurado y modular. Cada clase tiene su propósito y se evitan selectores complejos o anidados. Con BEM, el código es más mantenible y escalable, lo que es especialmente útil en proyectos grandes y equipos de desarrollo. ¡Espero que este ejemplo te ayude en tu aprendizaje de arquitectura CSS y BEM!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?