Next.js における CSS Modules の書き方の色々をまとめる。
環境
- Next.js v15
- TypeScript v5
- Sass v1
class="" → className={}
- class は className に変更
- 文字列リテラルは { } に変更
NG
<div class="test">hello</div>
OK
<div className={ `test` }>hello</div>
CSS Modules
import styles from "page.module.scss"
function Page() {
return (
<>
<div className={ styles.test }>hello</div>
</>
)
}
page.module.scss
.tset {
color: #046;
}
ハイフンを扱う時
import styles from "page.module.scss"
function Page() {
return (
<>
NG
<div className={ styles.test-sample }>hello</div>
OK
<div className={ styles["test-sample"] }>hello</div>
</>
)
}
複数指定
import styles from "page.module.scss"
function Page() {
return (
<>
<div className={ `${styles.test} ${styles.test2}` }>hello</div>
</>
)
}
変数
import styles from "page.module.scss"
type size = "small" | "medium" | "large"
function Page() {
let size = "small"
return (
<>
<div className={ styles[size] }>hello</div>
</>
)
}