CSS

15 jan, 2016

Usando BEM CSS

Publicidade

CSS é fácil de aprender? A princípio, muitos dirão que sim, principalmente pela sua facilidade e a possibilidade de se ver rapidamente o que se está fazendo. No entanto, como nem tudo na vida são flores, é claro que existem os pontos negativos e, quando falamos nisso, um dos principais pontos são a manutenção/organização do CSS.

Abrir um arquivo e sair escrevendo CSS é muito fácil e rápido, porém dar manutenção, organizá-lo e escalá-lo não são coisas triviais. Conforme seu projeto cresce, a tendência de você começar a perder a paciência com CSS ou de quebrar janelas vai ficando cada vez maior. Uma boa dica de leitura para esse assunto é o artigo CSS escalável do Shankar Cabus.

BEM css

Existem diversas alternativas/pensamentos/metodologias que tentam corrigir e auxiliar nessa questão de como organizar e estruturar o CSS de um projeto. Uma delas é o BEM (Block Element Modifier), que foi criado pelo pessoal do Yandex, um site de buscas russo.

Como pode-se notar a ideia básica é termos três itens:

  • bloco => pode-se dizer que seria relativo a um componente;
  • elemento => parte(s) que forma(m) um bloco;
  • modificador => estado de um dos dois itens anteriores.

Ahn?! Imaginemos uma lista de itens, com um item ativo, algo mais ou menos assim:

<ul class="list">
  <li class="list-item active"></li>
  <li class="list-item"></li>
  <li class="list-item"></li>
</ul>

 

.list {}
.list-item {}
.list-item.active {}

Aplicando o BEM, teríamos algo assim:

<ul class="list">
  <li class="list__item"></li>
  <li class="list__item"></li>
  <li class="list__item list__item--active"></li>
</ul>

 

.list {}
  .list__item {}
  .list__item--active {}

Confesso que há algum tempo, quando conheci o BEM, fui influenciado pelo pré-conceito e achei muito estranho/feio usar esses __ e –. Mas agora, mais por dentro da ideia, posso admitir que me convenceu. Claro que como qualquer outro pensamento/metodologia, existem seus pontos negativos e positivos e cabe a ti dar a palavra final.

Algumas coisas que percebi com a utilização do BEM (mas são apenas minhas opiniões):

  • Fácil percepção das coisas: batendo o olho rapidamente ou na marcação HTML ou no CSS, é possível entender o que cada coisa faz.
  • Mais fácil de reutilizar componentes.

Gostou? Escrevi alguma groselha? Quer melhorar? Abra uma issue mencionando o artigo e vamos conversar.

***

Artigo original publicado em: http://www.raphaelfabeni.com.br/bem-css/