1
resposta

[Dúvida] Boa pratica em CSS

Estou assistindo à aula “Estilos globais: fundo, texto e cores” e surgiu uma dúvida sobre boas práticas de CSS.

A professora mostrou que, para estilizar elementos específicos, como dois <span> dentro de um <h1>, podemos usar encadeamento de seletores, por exemplo:

h1 span { ... }

Porém, também sei que é possível atribuir classes ou IDs aos elementos para aplicar estilos de forma mais direta.

Minha dúvida é: em termos de boas práticas, qual abordagem é mais recomendada (seletores encadeados vs. classes/identificadores) considerando aplicações de pequeno, médio e grande porte?
Existe diferença de manutenção, escalabilidade ou performance entre essas abordagens?

1 resposta

Oi, Diegho! Como vai?

Seletores encadeados e classes/IDs são válidos, mas a melhor escolha muda conforme manutenção, escala e clareza do CSS.

Pontos importantes

  • Seletores encadeados (ex: h1 span) funcionam bem quando o estilo depende do contexto (um span dentro de um h1).
  • Classes são a opção mais comum para reuso e escalabilidade (ex: .titulo__destaque).
  • IDs (#algo) costumam ficar para casos bem pontuais (âncoras, JS, componente único). Para CSS, podem dificultar sobrescrita por terem alta especificidade.

1) Pequeno porte (página simples / exercício)
Do jeito que você explicou, h1 span pode ser ok se o objetivo for estilizar apenas spans do título e isso não vai se repetir muito.

Por exemplo:

<h1>Aprenda <span>HTML</span> e <span>CSS</span></h1>
h1 span {
  font-weight: bold;
  text-transform: uppercase;
}

O que esse código faz: aplica o estilo somente nos span que estão dentro de um h1.

2) Médio e grande porte (site com várias telas / time / componentes)
Para aumentar manutenção e reuso, prefira classes. Assim você não fica "preso" ao HTML (se o span sair do h1, o estilo não quebra).

Veja este exemplo:

<h1 class="titulo">
  Aprenda <span class="titulo__destaque">HTML</span> e
  <span class="titulo__destaque">CSS</span>
</h1>
.titulo__destaque {
  font-weight: bold;
  text-transform: uppercase;
}

O que esse código faz: você pode reaproveitar .titulo__destaque em outros lugares (card, banner, botão) sem depender da hierarquia.

3) Manutenção, escalabilidade e performance

  • Manutenção: classes ganham. Menos acoplamento ao HTML, mais fácil renomear/organizar.
  • Escalabilidade: classes ganham. Padrões como BEM (.bloco__elemento) ajudam muito em projetos maiores.
  • Performance: na prática, a diferença entre h1 span e .classe costuma ser irrelevante para a maioria dos projetos. O que pesa mais é quantidade de regras, reflows e organização do CSS.

4) Uma regra prática que ajuda

  • Use encadeamento curto quando for intencionalmente contextual (ex: .cabecalho h1).
  • Use classes para tudo que for reutilizável e para estilo de componente.
  • Evite IDs para estilo quando você precisar sobrescrever com frequência.

Se quiser, pense assim:

  • Estilo de componente: .titulo__destaque
  • Estilo por contexto: .hero h1 span (com parcimônia)

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado