🏗️

Módulo 14: Organizar como um Pro (BEM)

2. Resumo da Aula Anterior

No Módulo 13, explorámos as propriedades mais modernas do CSS. Agora que sabemos o que o CSS pode fazer, vamos aprender a organizar centenas de linhas de código sem que o projeto se torne uma confusão.

3. O Que Vais Aprender Hoje

4. Teoria: A Arquitetura das Nomes

Conceito: O BEM é uma convenção de nomes. Um Bloco é uma entidade independente (ex: um botão). Um Elemento é uma parte desse bloco (ex: o ícone do botão). Um Modificador é uma variação (ex: botão grande ou botão vermelho).

🏗️ Analogia: O LEGO vs. O Castelo de Areia

Imagina que estás a construir:

  • Código Mau (Castelo de Areia): Se mudares uma torre, corres o risco de o castelo todo desabar. As peças estão todas misturadas e coladas.
  • BEM (LEGO): O teu site é feito de peças independentes. Se precisares de um carro (bloco), ele tem rodas (elementos). Se quiseres um carro azul (modificador), mudas apenas essa peça sem afetar a casa que está ao lado!

5. Exemplos Práticos

Exemplo 1: A Anatomia BEM

Estrutura de um card de perfil.

/* Bloco (Entidade) */
.card-perfil { ... }

/* Elemento (Parte do Bloco - __) */
.card-perfil__imagem { ... }
.card-perfil__nome { ... }

/* Modificador (Variação - --) */
.card-perfil--escuro { background: black; }

Os dois underscores (__) indicam pertença, e os dois traços (--) indicam variação.

Exemplo 2: O Problema das Coincidências

Por que não usar apenas .titulo?

/* Errado: .titulo { color: blue; } */
/* Isto vai pintar TODOS os títulos do site, mesmo os que não queres! */

/* Correto (BEM): */
.hero__titulo { font-size: 3rem; }
.noticia__titulo { font-size: 1.5rem; }

Com o BEM, tens a certeza absoluta que o estilo de uma secção não vai "vazar" para a outra.

6. Agora é a Tua Vez!

Vamos organizar um "Componente de Alerta":

  1. Cria uma div com a classe bloco alerta.
  2. Lá dentro, cria um parágrafo que é o elemento alerta__texto.
  3. Cria um botão alerta__fechar.
  4. No CSS, dá estilos a estes três nomes.
  5. Cria agora um modificador alerta--erro que muda a cor de fundo para vermelho.
  6. Aplica tanto a classe alerta como a alerta--erro no mesmo elemento HTML e vê o resultado!

7. Verificação de Conhecimento

Carregando quiz...

8. Resumo do Que Aprendemos

9. Desafios Práticos

Desafio 1: O Detetive de Nomes

Qual destes nomes segue a regra BEM para um botão de submeter num formulário de login?

  • A) .login-submit
  • B) .login__submit-button
  • C) .login-form__button

Desafio 2: O Triângulo das Bermudas

Podes usar BEM dentro de BEM? Ex: .item__titulo__link?

Desafio 3: Reflexão

Qual é o seletor mais específico no CSS (e que o BEM nos ajuda a evitar usar quase sempre)?

« Aula Anterior Próxima Aula »