前回の続きからGatsbyチュートリアル進めていきます。
2. Introduction to Styling in Gatsby(ギャツビーのスタイリング入門)
Gatsbyにおけるスタイルの設定方法のチュートリアルです。
グローバルのスタイル
グローバルのスタイルを記述するglobal.css
作成していきます。
特にフォルダ位置に制約はないようなので任意の場所でいいのですが,今回は下記のようにフォルダを配置します。
├── package.json
├── src
│ └── pages
│ └── index.js
│ └── styles
│ └── global.css
/* global.css */
html {
background-color: aliceblue;
}
スタイルがあたっているか確認できればいいので,背景色を変えるだけのスタイルです。
次にルート配下にgatsby-browser.js
を作成します。
以下のような構成になります。
├── package.json
├── src
│ └── pages
│ └── index.js
│ └── styles
│ └── global.css
├── gatsby-browser.js
このgatsby-browser.jsはGatsbyBrowserAPIを使ったりするのに必要みたいです。
今の所はファイル名 gatsby-browser.js が重要(違うファイル名ではダメ)ということだけわかっていればいいようです。
gatsby-browser.js
でglobal.css
をインポートします。
// gatsby-browser.js
import "./src/styles/global.css"
インポートの形式はCommonJS(require)でもES Module(import)どちらの構文でも機能します。
特にこだわりがなければES Moduleのimportを使用しておけばいいです。
今回は,チュートリアルなので直接CSSをインポートしていますが,大体の場合はレイアウトコンポーネントにスタイルを適用してレイアウトコンポーネントを使用するようです。
確かにGatsby以外でもグローバルにスタイル当てたいことあまりないですよね(知らないだけかもしれないですけど)。
ブラウザごとの挙動をリセットするためのNormalize.cssやress.cssとかくらいでしょうか?
コンポーネントのスタイル
CSSモジュールを使用します。
コンポーネントごとに*.module.css
というCSSファイルを作成します。
GatsbyにプレーンのCSSではなく,CSSモジュールとして処理する必要があることを伝えるために*.module.css
という形式になっています。
試してみました。
構成はこのような構成です。
├── src
│ └── components
│ └── container.js
│ └── container.module.css
│ └── pages
│ └── index.js
/* container.module.css */
.container {
margin: 3rem auto;
max-width: 600px;
}
// container.js
import React from "react"
import containerStyles from "./container.module.css"
console.log(containerStyles)
export default function Container({ children }) {
return <div className={containerStyles.container}>{children}</div>
}
container.module.css
ファイルを開発ツールに出力しています。
結果は以下の通り。
{container: "container-module--container--3C57J"}
container: "container-module--container--3C57J"
__proto__: Object
CSSモジュールを使用するとクラス名にユニークな名前をつけてくれるんですね。
その他
Gatsbyではスタイリングに関してのプラグインが豊富です。
有名どころなCSSフレームワークはだいたいプラグインが提供されているので使えます。
Sassなどもプラグインでサポートされていて使えるみたいです。
Gatsby触ってみる 記事一覧
- Gatsby触ってみる【HelloWorld編】
- Gatsby触ってみる【ビルディングブロック編】
- Gatsby触ってみる【スタイリング編】
- Gatsby触ってみる【レイアウトコンポーネント編】
- Gatsby触ってみる【データレイヤ編】
- Gatsby触ってみる【ソースプラグイン編】
- Gatsby触ってみる【トランスフォーマープラグイン編】
- Gatsby触ってみる【ページ作成編①】
- Gatsby触ってみる【ページ作成編②】