Gatsby.jsで静的なWebサイトをサクッと作る(インストールからHTML編集篇)の続きです。
今回は、CSS(SCSS)でスタイルをあてるまでを解説します。
SCSSを使えるようにする
そのままでは、SCSSファイルが使えないので、プラグインをインストールします。
$ npm install --save node-sass gatsby-plugin-sass
上記コマンドを実行し、完了したらgatsby-config.js
ファイルを作成し、SCSSが使えるように以下の記述をします。
module.exports = {
plugins: [`gatsby-plugin-sass`]
}
これでSCSSが使えるようになります。
グローバルなスタイルを設定
まずは、リセットCSS等の全ページに適用されるスタイルを設定してみましょう。src/styles/global.scss
を作成します。
html {
color: red;
}
続いて、gatsby-browser.js
を作成しsrc/styles/gloabl.css
をimport
します。
import "./src/styles/global.scss"
これで、文字が赤くなっているはずです。$ npm run develop
でローカルサーバーを起動し、確認してみましょう。
スコープされたスタイルを設定する
Gatsby.js(React)では、CSS Modules
を使用し、CSS(SCSS)をスコープさせることができます。現時点ではindex.jsしか存在しないので無意味ですが、コンポーネントが増えてくると、そのコンポーネントでのみ有効なスタイルをあてることができるので、すごく便利です。
では、src/pages/index.js
でのみ有効なsrc/pages/index.module.scss
を作成しましょう。
.txt {
color: green;
}
続いて、src/pages/index.js
にsrc/pages/index.module.scss
をimport
します。
import React from "react"
import Styles from "./index.module.scss"
export default () => (
<div>
<p className={Styles.txt}>Hello</p>
<p>world!</p>
</div>
)
index.module.scss
に書かれた.txt
を、index.js
ではStyles
というオブジェクトとして扱っていています。.txt
はStyles
のプロパティになっているので、className
属性で{Styles.txt}
とすると、.txt
で設定したCSSプロパティが反映されます。
属性名がclass
ではなくclassName
になっているのは、class
がJavaScriptの予約語で使用できないためです。また、{}
で囲うことによりJavaScripを実行できます。
ブラウザを確認すると、Hello
のみ緑色になっているはずです。また、ChromeのDevToolsでElementを見てみると、class属性部分がユニークな文字列になっています。
今回はここまで!次回も、乞うご期待!