[CSS] Vamos organizar nosso CSS?
Um CSS mal arquitetado pode ser uma dor de cabeça. Como tudo nele é global, pequenas mudanças tornam-se
complicadas. Claro que processadores como SASS facilitam muito, mas uma metodologia bem aplicada é o que realmente faz
a diferença na escalabilidade e manutenibilidade do seu CSS.
Das diversas metodologias que existem, vamos falar sobre o BEM (Block, Element, Modifier), que tem como objetivo
organizar as classes por funções:
- Block: É um componente de UI (por exemplo, um formulário);
- Element: É um componente de um Block (por exemplo, um input, botão ou label de um formulário);
- Modifier: É uma mudança que ocorre na apresentação de um Block ou Element (por exemplo um botão ativo ou pressionado);
Por convenção temos a seguinte sintaxe:
.block /* -> Um Block. */
.block__element /* -> Um Element que pertence à um Block. */
.block--modifier /* -> Um Modifier de um Block. */
.block__element--modifier /* -> Um Modifier de um Element. */
A principal ideia por trás do BEM e de outras metodologias é basicamente evitar a “herança” nas classes, por
exemplo:
.todoform .task .error { }
Então, bora ver um exemplo mais completo:
<form class="todoform todoform--errors">
<label for="task" class="todoform__task todoform__task--error">
Nova tarefa: <input type="text" name="task" />
</label>
<button type="submit" class="todoform__btn todoform__btn--disabled">
Adicionar
</button>
</form>
Temos um block “todoform” que pode conter modifiers “todoform--erros”. Só olhando para esse trecho, já sabemos que
o formulário é para cadastro de um “to-do” e ele tem uma classe de erro que indica quando algo está errado no
formulário.
Logo em seguida um label e seu input categorizam-se como um element do block “todoform” com seu modifier de erro e
um botão do mesmo block com um modifier mostrando se o botão está desativado.
Como podemos reparar, o HTML e CSS ficam muito mais didáticos. É mais simples entender o que cada componente leva
em sua estilização e também bem mais fácil de realizar modificações.
Agora quando falarem que o “hover” daquele botão X está com uma cor esquisita, você consegue ir diretamente no
problema e alterá-lo sem nenhum efeito colateral. É isso ai, abraços!