16
チャプター16
グローバルスタイル
CSS Modulesはコンポーネントレベルのスタイルに便利です。しかし、すべてのページでCSSを読み込みたい場合、Next.jsはそのためのサポートも提供しています。
アプリケーションにグローバルCSSを読み込むには、pages/_app.js
というファイルを作成し、以下の内容を記述します
export default function App({ Component, pageProps }) {
return <Component {...pageProps} />;
}
_app.js
のデフォルトエクスポートは、アプリケーション内のすべてのページをラップするトップレベルのReactコンポーネントです。このコンポーネントを使用して、ページ間のナビゲーション時に状態を保持したり、今回のようにグローバルスタイルを追加したりできます。_app.js
ファイルの詳細についてはこちらをご覧ください。
開発サーバーを再起動する
重要: pages/_app.js
を追加した場合、開発サーバーを再起動する必要があります。Ctrl + cを押してサーバーを停止し、実行してください。
npm run dev
グローバルCSSの追加
Next.jsでは、グローバルCSSファイルはpages/_app.js
からインポートすることで追加できます。他の場所からグローバルCSSをインポートすることはできません。
グローバルCSSをpages/_app.js
以外からインポートできない理由は、グローバルCSSがページ上のすべての要素に影響を与えるためです。
ホームページから/posts/first-post
ページに移動した場合、ホームページからのグローバルスタイルが意図せず/posts/first-post
に影響を与えてしまいます。
グローバルCSSファイルはどこにでも配置でき、どのような名前でも使用できます。では、以下の手順を実行しましょう。
- トップレベルに
styles
ディレクトリとglobal.css
ファイルを作成します。 styles/global.css
内に以下のCSSを追加します。このコードはいくつかのスタイルをリセットし、a
タグの色を変更します。
html,
body {
padding: 0;
margin: 0;
font-family:
-apple-system,
BlinkMacSystemFont,
Segoe UI,
Roboto,
Oxygen,
Ubuntu,
Cantarell,
Fira Sans,
Droid Sans,
Helvetica Neue,
sans-serif;
line-height: 1.6;
font-size: 18px;
}
* {
box-sizing: border-box;
}
a {
color: #0070f3;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
img {
max-width: 100%;
display: block;
}
最後に、以前作成したpages/_app.js
ファイル内にCSSファイルをインポートします。
// `pages/_app.js`
import '../styles/global.css';
export default function App({ Component, pageProps }) {
return <Component {...pageProps} />;
}
これで、https://:3000/posts/first-postにアクセスすると、スタイルが適用されていることが確認できます。_app.js
でインポートされたスタイルは、アプリケーションのすべてのページにグローバルに適用されます。

もし動作しなかった場合:
pages/_app.js
を更新した際は、開発サーバーを再起動してください。
これは役に立ちましたか?