Descubra como organizar seu CSS de forma profissional usando metodologias como BEM, OOCSS e SMACSS. Aprenda a evitar conflitos, facilitar manutenção e escalar projetos grandes com código limpo e previsível.
Entender os principais métodos para organizar e estruturar CSS em projetos reais.
Aprender a usar cada metodologia, suas vantagens e como escolher a melhor para cada projeto.
Descobrir técnicas para evitar conflitos de estilos, facilitar manutenção e escalar projetos grandes.
Em projetos pequenos, o CSS pode ser simples. Mas conforme o site cresce, manter o código organizado, evitar conflitos e garantir escalabilidade se torna um desafio. Metodologias ajudam a criar padrões, facilitar manutenção e colaboração.
BEM é uma metodologia popular que usa nomes de classes padronizados para evitar conflitos e facilitar a leitura do código.
<div class="card card--destaque">
<h2 class="card__titulo">Título</h2>
<p class="card__descricao">Descrição do card</p>
</div>
.card { /* Block */ }
.card__titulo { /* Element */ }
.card__descricao { /* Element */ }
.card--destaque { /* Modifier */ }
.bloco
- componente principal.bloco__elemento
- parte do componente.bloco--modificador
- variação do componenteOOCSS incentiva separar estrutura (layout) de aparência (skin), criando classes reutilizáveis e flexíveis.
<div class="media media--avatar">
<img class="media__img" src="avatar.jpg" alt="Avatar">
<div class="media__body">Conteúdo</div>
</div>
.media { display: flex; }
.media__img { border-radius: 50%; }
.media--avatar { background: #f5f5f5; }
SMACSS propõe dividir o CSS em categorias: Base, Layout, Module, State e Theme. Cada categoria tem um papel claro, facilitando organização e manutenção.
.is-active
, .is-hidden
)/* Exemplo de State */
.button {
background: #5222d0;
color: white;
}
.button.is-active {
background: #ec615b;
}
div
, span
)Pegue um componente do seu projeto (ex: card, botão, menu) e reescreva suas classes usando o padrão BEM. Documente a estrutura e explique as vantagens.
<div class="menu menu--mobile">
<button class="menu__toggle">☰</button>
<nav class="menu__nav">
<a class="menu__item menu__item--active" href="#">Home</a>
<a class="menu__item" href="#">Sobre</a>
<a class="menu__item" href="#">Contato</a>
</nav>
</div>