En Next.js, tienes varias formas de cargar y encapsular CSS para un componente específico. Aquí te explico las más comunes:
Es la forma más recomendada para encapsular el CSS en un componente específico. Los estilos definidos en un módulo CSS se aplican solo a ese componente.
Pasos:
.module.css.Ejemplo:
styles/Button.module.css.button {
background-color: blue;
color: white;
padding: 10px 20px;
border-radius: 5px;
}components/Button.jsimport styles from './Button.module.css';
export default function Button() {
return <button className={styles.button}>Click Me</button>;
}Next.js soporta styled-jsx de forma nativa. Con styled-jsx, puedes escribir CSS directamente en el archivo del componente, y ese CSS estará encapsulado y aplicado solo a ese componente.
Ejemplo:
components/Button.jsexport default function Button() {
return (
<>
<button className="button">Click Me</button>
<style jsx>{`
.button {
background-color: blue;
color: white;
padding: 10px 20px;
border-radius: 5px;
}
`}</style>
</>
);
}Puedes usar librerías como styled-components para encapsular estilos. Necesitas instalar styled-components y luego puedes usarlo para definir estilos dentro del componente.
Pasos:
styled-components:npm install styled-componentsimport styled from 'styled-components';
const Button = styled.button`
background-color: blue;
color: white;
padding: 10px 20px;
border-radius: 5px;
`;
export default function MyButton() {
return <Button>Click Me</Button>;
}Además de styled-components, existen otras librerías CSS-in-JS como Emotion que puedes utilizar de manera similar para encapsular estilos a nivel de componente.
Ejemplo con Emotion****:
Emotion:npm install @emotion/react @emotion/styled/** @jsxImportSource @emotion/react */
import { css } from '@emotion/react';
const buttonStyle = css`
background-color: blue;
color: white;
padding: 10px 20px;
border-radius: 5px;
`;
export default function Button() {
return <button css={buttonStyle}>Click Me</button>;
}¿Cuál de las formas que te he explicado crees que es la más adecuada para un proyecto en el que quieres asegurarte de que los estilos no se compartan accidentalmente entre componentes? ¿Por qué?

I am particularly drawn to developing applications that are not only functional but also visually appealing and easy to use. I accomplish this by implementing SOLID principles and clean architecture, and applying testing to ensure quality.