Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Esse padrão de nomes ficou tão bom e tão eficiente, que só ficou atrás de
petróleo e gás nas exportações da Rússia para o mundo. 😂
Como você verá em nosso tutorial completo sobre BEM, a metodologia conta
com uma simplicidade e uma eficácia fora do comum, permitindo que se
aprenda e já se comece a usar imediatamente.
O que é BEM?
Pessoas do mundo todo tentam chegar a melhores práticas para se trabalhar
com desenvolvimento web . Afinal, todos querem conseguir resultados
melhores com esforços menores, certo?
https://desenvolvimentoparaweb.com/css/bem/ 2/12
20/11/2020 BEM: guia definitivo do padrão CSS mais famoso | desenvolvimento para web
Bloco
https://desenvolvimentoparaweb.com/css/bem/ 3/12
20/11/2020 BEM: guia definitivo do padrão CSS mais famoso | desenvolvimento para web
Elemento
Elementos têm uma regra específica de escrita, sendo uma classe CSS
composta de Nome do Bloco + 2 underlines + nome do Elemento: .
[Bloco]__[Elemento] .
Por exemplo, se você tem um Bloco .c-menu , um Elemento dele pode ser .c-
menu__item ou .c-menu__link .
Modificador
https://desenvolvimentoparaweb.com/css/bem/ 4/12
20/11/2020 BEM: guia definitivo do padrão CSS mais famoso | desenvolvimento para web
[Modificador] .
dark para um versão escura; uma versão do menu fixa com .c-menu--fixed ou;
para links desabilitados, .c-menu__link--disabled .
1 <ul class="c-menu">
2 <div class="c-menu__item">
3 <a href="#" class="c-menu__link">Item</a>
4 </div>
5
6 <div class="c-menu__item">
7 <a href="#" class="c-menu__link c-menu__link--disabled">Outro item</a>
8 </div>
9
https://desenvolvimentoparaweb.com/css/bem/ 5/12
20/11/2020 BEM: guia definitivo do padrão CSS mais famoso | desenvolvimento para web
10 <div class="c-menu__item">
11 <a href="#" class="c-menu__link">E mais um</a>
12 </div>
13 </ul>
1 .c-menu {}
2
3 .c-menu__item {}
4
5 .c-menu__link {}
6
7 .c-menu__link--disabled {}
https://desenvolvimentoparaweb.com/css/bem/ 6/12
20/11/2020 BEM: guia definitivo do padrão CSS mais famoso | desenvolvimento para web
Em partes, isso pode ser verdade, mas muitos dos críticos desconhecem essa
boa prática de escrita, deixando de usar nomes bem curtinhos, como os do
exemplo.
Mas existem casos em que, sim, cairia bem escrever algo com diversos níveis
de hierarquia (mas não exatamente replicando a coisa toda).
https://desenvolvimentoparaweb.com/css/bem/ 7/12
20/11/2020 BEM: guia definitivo do padrão CSS mais famoso | desenvolvimento para web
Mas nomes tão grandes realmente podem cansar a leitura (além de aumentar
o peso final dos arquivos HTML). E imagine este elemento com 2 ou 3
Modificadores, cujos nomes devem conter o nome do Bloco…
Para casos como este, você só tem que se preocupar com o seguinte: prover
um nome único, que deixe o elemento inequivocamente identificável dentre os
demais.
1 <article class="c-card">
2 <!-- ... -->
3 <button class="c-button">Click me!</button>
https://desenvolvimentoparaweb.com/css/bem/ 8/12
20/11/2020 BEM: guia definitivo do padrão CSS mais famoso | desenvolvimento para web
Se sim, então, realmente, vale a pena que se crie o Mod; se não, é o caso de
um estilo que afetará o Botão somente quando ele estiver dentro do Card:
1 .c-card .c-button {}
É uma diferença que pode parecer sutil para alguns, mas que faz toda a
diferença na prática.
E, também, nada impede de se criar dessa forma e, se for notado que será
necessário o uso de um botão maior em outros pontos do site, refatorar o
código para a criação de .c-button--large .
A verdade é que nenhuma delas pode ser considerada errada e usar qualquer
uma das abordagens vai dar conta do recado. Realmente fica por conta de
definir o padrão a ser usado em casos assim e o seguir em todo o projeto.
BEM e Sass
https://desenvolvimentoparaweb.com/css/bem/ 10/12
20/11/2020 BEM: guia definitivo do padrão CSS mais famoso | desenvolvimento para web
Se você usa Sass em seus projetos front end, aqui vai uma boa notícia: Sass
provê integração nativa com BEM!
Então, basta usar o famoso & (Ampersand) de Sass para que ele gere
classes curtas, sem superqualificação e especificidade adequada.
Por exemplo:
1 .c-menu {
2 &__item {}
3
4 &__link {
5 &--disabled {}
6 }
7 }
Compila para:
1 .c-menu {}
2
3 .c-menu__item {}
4
5 .c-menu__link {}
https://desenvolvimentoparaweb.com/css/bem/ 11/12
20/11/2020 BEM: guia definitivo do padrão CSS mais famoso | desenvolvimento para web
6
7 .c-menu__link--disabled {}
Conclusão
Então esta é a famosa metodologia BEM, acrônimo para Bloco, Elemento e
Modificador, trinca famosa por sua facilidade e simplicidade no uso que traz
inúmeras vantagens aos projetos front-end que a adotam.
Se, para você (ou seu time), deixar de usar essa sintaxe compensar mais que:
Código desacoplado;
Reúso automático de código;
Menos repetições;
Rápida identificação de estruturas HTML através do CSS (e vice-versa);
Independência de classes;
Seletores menores e mais performáticos;
CSS mais manutenível.
https://desenvolvimentoparaweb.com/css/bem/ 12/12