Gatsby.js + styled-componentsでGlobalCSSを設定する
こんにちは!Web エンジニアのたけです!
前回はGatsby.js で styled-components を導入する手順をまとめました!
今回は導入した styled-components で GlobalCss を設定する手順についてまとめていきたいと思います!
GlobalCSS ファイルの作成
まず、GlobalCSS を記述するファイルを作ります!私の場合はGlobalCss.js
というファイルを作成しました。
以下は私の GlobalCSS の設定となります。
ポイントはcreateGlobalStyle を用いるところです!SSR と共に使う場合はこちらを使います。(Next.js もこれ)
import React from 'react'
import { createGlobalStyle } from 'styled-components'
import reset from 'styled-reset'
import { COLOR } from '../components/shared/CssValues'
const Global = createGlobalStyle`
@import url('https://fonts.googleapis.com/css?family=Caveat');
@import url(https://fonts.googleapis.com/earlyaccess/notosansjp.css);
${reset}
body {
font-family: 'Noto Sans JP', sans-serif;
letter-spacing: 0.1em;
line-height: 1.5;
color: ${COLOR.black}
}
`
const GlobalCSS = () => {
return <Global />
}
export default GlobalCSS
ResetCss の設定と web フォントの import をしており、フォント周りの設定もここで行なっています。(この辺りはお好みでどうぞ)
reset-css はこちらのライブラリを使ってます。
npm install --save styled-reset
GlobalCss の設定はサイトに合わせて好みで試してみてください!
あとは、適応させたいページに import してきてコンポーネントを配置するだけです。
作成した GlobalCSS ファイルの適用
コンタクトページに GlobalCSS を適用させた場合以下のようになります。
// 例
import React from 'react'
import styled from 'styled-components'
import SEO from '../components/seo'
import GlobalCss from '../components/GlobalCss'
import ContentsWrapper from '../components/atoms/ContentsWrapper'
import ThemeContainer from '../components/atoms/ThemeContainer'
import Header from '../components/organisms/Header'
import Contact from '../components/organisms/Contact'
class ContactPage extends React.Component {
render() {
return (
<div>
<SEO title="Contact" />
<GlobalCss />
<Header />
<ThemeContainer themeColor={COLOR.lightYellow}>
<ContentsWrapper>
<Contact />
</ContentsWrapper>
</ThemeContainer>
</div>
)
}
}
export default ContactPage
import してきて配置するだけなので簡単ですね!
基本的に src/pages/___.js のファイルに配置するイメージです。(他にもっと楽な方法があれば教えてください・・)
これで CSS-in-JS の設定はもう大丈夫 (・・なはず)です!