Using next.js 13.1.1 with /app
I've been doing all of my styles through a global.css up until now, but I'm trying to migrate them into CSS Modules.
In my root layout.js, I have a Header component that imports from ./header.js. This works fine with global.css.
I've made a module ../styles/header.module.css, and I import it into ./header.js with import styles from "../styles/header.module.css";, but then when I try to use it, for example with <h1 className={styles.big_title}>, none of the CSS is applied.
Any help would be much appreciated, I've been trying to fix this for hours. No errors occur, the CSS just doesn't apply.
// ./layout.js
import Header from "./header";
import Footer from "./footer";
import "../styles/global.css";
export default function RootLayout({ children }) {
return (
<html>
<head>
<title>SB-Wiki</title>
</head>
<body>
<Header />
<main>
{children}
</main>
<Footer />
</body>
</html>
);
}
/* ../styles/header.module.css */
.big_title {
color: red;
}
// ./header.js
import styles from "../styles/header.module.css";
export default function Header() {
return (
<header>
<p className={styles.big_title}>Test</p>
</header>
)
}
The styles display if I add import styles from "../styles/header.module.css"; to the top of a page.js but that rather defeats the point of having a root layout.js as the framework is designed this way.
CodePudding user response:
You can use it like this styles["big_title"]
// ./header.js
import styles from "../styles/header.module.css";
export default function Header() {
return (
<header>
<p className={styles["big_title"]}>Test</p>
</header>
)
}
CodePudding user response:
The problem is with next.js . You need to create config file for next.config.js in order to properly support your CSS .
module.exports = {
cssModules: true,
cssLoaderOptions: {
importLoaders: 1,
localIdentName: "[]",
},
};
The config file will tell the next.js to treat your CSS files as CSS
CodePudding user response:
It could be the kebab-case. Try camelCase instead.
<p className={styles.bigTitle}>Test</p>
.bigTitle {
color: red;
}
CodePudding user response:
Other answers may be work, also
Try this
To use CSS Modules with Next.js, add the following to your next.config.js file to enable the CSS loader:
const withCSS = require('@zeit/next-css');
module.exports = withCSS({
cssModules: true,
cssLoaderOptions: {
importLoaders: 1,
localIdentName: '[local]___[hash:base64:5]',
},
});
