Publicado em: 01/02/2024

CSS Modules - Next.js


Neste artigo, vamos explorar os módulos CSS no Next.js, uma abordagem moderna para estilização que resolve problemas comuns de escopo global em CSS tradicional.

O que são Módulos CSS?

Módulos CSS são arquivos CSS onde todas as classes e animações têm escopo local por padrão. Isso significa que quando você cria uma classe em um módulo CSS, ela é automaticamente transformada em um nome único que só será aplicado ao componente que a importa.

Diferente do CSS global tradicional (como no arquivo globals.css), onde classes com o mesmo nome podem conflitar em diferentes partes da aplicação, os módulos CSS garantem que cada classe seja única no projeto inteiro, mesmo que você use o mesmo nome de classe em arquivos diferentes.

Como Funciona na Prática?

Para usar módulos CSS no Next.js, criamos arquivos com a extensão .module.css. Por convenção, geralmente criamos um arquivo de módulo CSS específico para cada componente ou página.

Por exemplo, para a página inicial (home), criamos um arquivo app.module.css:

1.container {
2  background-color: blue;
3}

E então importamos no componente:

1import styles from "./app.module.css";
2function Home() {
3  return (
4    <main className={styles.container}>
5      {/* conteúdo */}
6    </main>
7  );
8}

O Next.js automaticamente transforma a classe container em um nome único como app_container__abc123, evitando conflitos com outras classes de mesmo nome.

Vantagens dos Módulos CSS

  • Escopo local: Estilos não vazam para outros componentes
  • Nomes únicos: Não há risco de conflitos de nomes de classes
  • Manutenção facilitada: Fácil de rastrear onde os estilos são usados
  • Integração com React: Trabalha perfeitamente com a prop className
  • Performance: O Next.js otimiza e minifica automaticamente

Boas Práticas

Ao trabalhar com módulos CSS no Next.js:

  1. Crie um arquivo de módulo CSS para cada componente/página importante
  2. Use convenções de nomeação consistentes (ex: [nome-do-componente].module.css)
  3. Evite aninhamento muito profundo de seletores
  4. Combine com variáveis CSS para estilos compartilhados
  5. Use composição de classes quando necessário

Considerações Finais

Os módulos CSS no Next.js oferecem uma solução elegante para um dos maiores desafios no desenvolvimento front-end: o gerenciamento de escopo de estilos. Ao adotar essa abordagem:

  • Você elimina preocupações com conflitos de nomes de classes
  • Ganha mais confiança ao refatorar componentes
  • Mantém seu CSS organizado e modular
  • Facilita a colaboração em equipe

Embora os módulos CSS resolvam muitos problemas, eles não são a única opção. Em projetos maiores, você pode querer combiná-los com outras abordagens como:

  • Styled-components ou Emotion para estilos dinâmicos
  • Tailwind CSS para utilitários
  • Sass para recursos avançados de pré-processamento

O importante é escolher a ferramenta certa para cada necessidade do seu projeto. Os módulos CSS são particularmente úteis quando você quer manter a simplicidade do CSS tradicional mas com os benefícios do escopo local.

últimos vídeos

veja nossos vídeos mais recentes e esteja por dentro de muitas novidades.