GatsbyでSCSSをMixinする方法
Gatsby.jsを使ってSCSSをMixinするときに設定したことをメモ
やりたかったこと
Scoped Styleにmixinで定義したcssをincludeで読み込ませたかった
mixinのファイル例
src/assets/scss/foundation/_mixin.scss
// flexbox
@mixin flexbox($wrap: nowrap, $align: stretch, $justify: center) {
display: flex;
flex-wrap: $wrap;
align-items: $align;
justify-content: $justify;
}
SASS/SCSSの設定
$ yarn add node-sass gatsby-plugin-sass
gatsby-config.js
module.exports = {
--- (中略) ---
plugins: [
{
resolve: `gatsby-plugin-sass`,
options: {
data: `@import "./src/assets/scss/foundation/_mixin.scss";`
},
}
--- (中略) ---
Scoped StyleでMixinを使うとき
src/assets/scss/foundation/_mixin.scss
// flexbox
@mixin flexbox($wrap: nowrap, $align: stretch, $justify: center) {
display: flex;
flex-wrap: $wrap;
align-items: $align;
justify-content: $justify;
}
$ yarn add node-sass gatsby-plugin-sass
gatsby-config.js
module.exports = {
--- (中略) ---
plugins: [
{
resolve: `gatsby-plugin-sass`,
options: {
data: `@import "./src/assets/scss/foundation/_mixin.scss";`
},
}
--- (中略) ---
Scoped StyleでMixinを使うとき
以下はgatsby-starter-defaultを使ってプロジェクトを作成したものに対して、index.jsでScoped Styleを使いたい場合の例
src/pages/index.module.scss
.hoge {
@include flexbox(nowrap, normal, center);
}
src/pages/index.js
import React from "react"
import { Link } from "gatsby"
import Layout from "../components/layout"
import Image from "../components/image"
import SEO from "../components/seo"
import Style from "./index.module.scss" // 追加
const IndexPage = () => (
<Layout>
<SEO title="Home" />
<h1>Hi people</h1>
<div className={Style.hoge}> // 追加
<p>Welcome to your new Gatsby site.</p>
<p>Now go build something great.</p>
</div>
<div style={{ maxWidth: `300px`, marginBottom: `1.45rem` }}>
<Image />
</div>
<Link to="/page-2/">Go to page 2</Link> <br />
<Link to="/using-typescript/">Go to "Using TypeScript"</Link>
</Layout>
)
export default IndexPage
スタイルを当てたDivが中央揃えされています
Author And Source
この問題について(GatsbyでSCSSをMixinする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/naoto_koyama/items/950da4629a8c398f3cd3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .