Usando Módulos CSS para Estilização com Escopo em React
CSS modules é uma abordagem que permite escopar nomes de classes CSS localmente para componentes específicos. Proporciona uma maneira de escrever código CSS de forma modular e encapsulada, reduzindo as chances de conflitos de estilos e tornando a manutenção dos estilos mais fácil. De fato, tornou-se uma das abordagens mais amplamente adotadas para organizar projetos React.
Organização de arquivos e pastas
Suponha que temos a seguinte interface de usuário composta por três componentes: VideoPlayer, AuthorInformation e VideoDescription.
Não iremos consolidar todos os componentes e estilos em um único arquivo. Em vez disso, estabeleceremos uma pasta separada para cada componente. Dentro de cada pasta, criaremos um arquivo jsx para renderização e lógica, e um arquivo css para aplicação dos estilos. Cada arquivo css deve terminar com module.css para garantir a modularidade. Assim, a estrutura ficaria da seguinte forma:
Nota
Esta abordagem oferece uma solução conveniente para criar componentes React e escrever estilos. Ela garante que cada componente seja isolado e possa ser reutilizado de forma eficaz. O escopo local dos nomes de classe melhora a organização do código, promove a reutilização e evita conflitos de estilos.
Sintaxe
Vamos explorar a sintaxe do uso de estilos modulares para um componente, utilizando o componente VideoDescription como exemplo.
Dentro do VideoDescription.jsx, criamos um componente que gera uma marcação específica. Não há nada particularmente novo ou desconhecido nisso.
const VideoDescription = () => (
<p>
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Delectus accusamus
iure amet officia? Ratione harum, mollitia rem, maxime eveniet totam
cupiditate explicabo omnis, atque iure architecto officiis praesentium
libero quae.
</p>
);
A diferença surge quando desejamos aplicar um nome de classe. Primeiro, é necessário importar o arquivo VideoDescription.module.css no arquivo VideoDescription.jsx. Isso pode ser feito utilizando a seguinte sintaxe:
import <file_name> from "<file_path>";
<file_name>pode ser qualquer palavra associada ao arquivo. Geralmente, utiliza-se nomes como:css,stylesou simplesmentes;<file_path>é o caminho correto para o arquivo. Já conhecemos a sintaxe:./.
Resultado:
import css from "./VideoDescription.module.css";
Para atribuir um nome de classe ao elemento, pode-se utilizar o atributo className. Dentro desse atributo, o nome da classe desejada deve ser colocado entre chaves {}. Dentro das chaves, inclui-se a palavra associada ao arquivo de estilos, seguida de um ponto . e o nome da classe. Resultado: className={css.text}. text é o nome real da classe.
import css from "./VideoDescription.module.css";
const VideoDescription = () => (
<p className={css.text}>
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Delectus accusamus
iure amet officia? Ratione harum, mollitia rem, maxime eveniet totam
cupiditate explicabo omnis, atque iure architecto officiis praesentium
libero quae.
</p>
);
Agora é possível abrir o arquivo VideoDescription.module.css e aplicar os estilos ao elemento p com o nome de classe text utilizando o seletor de classe:
.text {
background-color: lightgreen;
color: darkblue;
font-size: 24px;
}
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain how CSS modules prevent style conflicts?
How do I use CSS modules with other components like VideoPlayer or AuthorInformation?
What are the benefits of using CSS modules over traditional CSS files?
Awesome!
Completion rate improved to 2.17
Usando Módulos CSS para Estilização com Escopo em React
Deslize para mostrar o menu
CSS modules é uma abordagem que permite escopar nomes de classes CSS localmente para componentes específicos. Proporciona uma maneira de escrever código CSS de forma modular e encapsulada, reduzindo as chances de conflitos de estilos e tornando a manutenção dos estilos mais fácil. De fato, tornou-se uma das abordagens mais amplamente adotadas para organizar projetos React.
Organização de arquivos e pastas
Suponha que temos a seguinte interface de usuário composta por três componentes: VideoPlayer, AuthorInformation e VideoDescription.
Não iremos consolidar todos os componentes e estilos em um único arquivo. Em vez disso, estabeleceremos uma pasta separada para cada componente. Dentro de cada pasta, criaremos um arquivo jsx para renderização e lógica, e um arquivo css para aplicação dos estilos. Cada arquivo css deve terminar com module.css para garantir a modularidade. Assim, a estrutura ficaria da seguinte forma:
Nota
Esta abordagem oferece uma solução conveniente para criar componentes React e escrever estilos. Ela garante que cada componente seja isolado e possa ser reutilizado de forma eficaz. O escopo local dos nomes de classe melhora a organização do código, promove a reutilização e evita conflitos de estilos.
Sintaxe
Vamos explorar a sintaxe do uso de estilos modulares para um componente, utilizando o componente VideoDescription como exemplo.
Dentro do VideoDescription.jsx, criamos um componente que gera uma marcação específica. Não há nada particularmente novo ou desconhecido nisso.
const VideoDescription = () => (
<p>
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Delectus accusamus
iure amet officia? Ratione harum, mollitia rem, maxime eveniet totam
cupiditate explicabo omnis, atque iure architecto officiis praesentium
libero quae.
</p>
);
A diferença surge quando desejamos aplicar um nome de classe. Primeiro, é necessário importar o arquivo VideoDescription.module.css no arquivo VideoDescription.jsx. Isso pode ser feito utilizando a seguinte sintaxe:
import <file_name> from "<file_path>";
<file_name>pode ser qualquer palavra associada ao arquivo. Geralmente, utiliza-se nomes como:css,stylesou simplesmentes;<file_path>é o caminho correto para o arquivo. Já conhecemos a sintaxe:./.
Resultado:
import css from "./VideoDescription.module.css";
Para atribuir um nome de classe ao elemento, pode-se utilizar o atributo className. Dentro desse atributo, o nome da classe desejada deve ser colocado entre chaves {}. Dentro das chaves, inclui-se a palavra associada ao arquivo de estilos, seguida de um ponto . e o nome da classe. Resultado: className={css.text}. text é o nome real da classe.
import css from "./VideoDescription.module.css";
const VideoDescription = () => (
<p className={css.text}>
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Delectus accusamus
iure amet officia? Ratione harum, mollitia rem, maxime eveniet totam
cupiditate explicabo omnis, atque iure architecto officiis praesentium
libero quae.
</p>
);
Agora é possível abrir o arquivo VideoDescription.module.css e aplicar os estilos ao elemento p com o nome de classe text utilizando o seletor de classe:
.text {
background-color: lightgreen;
color: darkblue;
font-size: 24px;
}
Obrigado pelo seu feedback!