【30分でマスター】sassのミックスインの使い方

ティロ

こんにちは、ティロといいます

sassの強力なツールの1つであるミックスインの使い方を分かりやすく解説します

 

sassをまだ書いたことがない方はこちらの記事をどうぞ

 

関連記事

所要時間:30分 ティロこんにちは、ティロといいますsassの超基本的な書き方を紹介します。環境構築がまだの人はこちらの記事をお読みください。15分程度で環境構築ができます。&n[…]

sassの超基本の書き方

 

sassの環境構築がまだの人はこちらの記事がおススメです。15分で完了します。

 

関連記事

所要時間約15分プログラミング初心者で黒い画面の使い方が分からない、ネットで調べてもうまくできない・・・そんな方向けの記事となります。この方法なら15分足らずで環境構築ができます! ティロこんに[…]

sassの環境構築を黒い画面なしで行う

 

ミックスインの基本的な使い方

ミックスインとはプロパティの集まりを1つの関数のように格納していつでも使えるようにしたものです。引数を指定することも可能です。

ミックスインは

@mixin ミックスイン名 {プロパティ}

で定義できます。

 

例を見てください。

定義したsectionというミックスインは.articleBoxで使用しています。これをcssに変換すると以下のようになります。

ミックスインはcssに記述されません。

ミックスインに引数をわたす

ペンギンさん
エクステンドとの違いはあるの?
ティロ
エクステンドとの違いはミックスインは引数を渡すことができる点です

例を見てください。

titleというミックスインに$fontSizeという引数を渡しています。.articleBox__titleでは25pxをtitleに渡しています。

cssに変換するとちゃんと.articleBox__titleのfont-sizeが25pxになっています。

 

またmarginやpaddingのような複数の値を指定したい場合は以下のようになります。

 

 

font-sizeの25pxとpaddingはカンマで区切ります。titleは引数を2つ指定しています。

このように引数を複数指定することで汎用性が高く、あとから編集しやすいコードになります。

エクステンドには引数を渡す機能がありません。エクステンドについてはこちらの記事に詳しく書きました。

 

関連記事

ティロこんにちは、ティロといいますsassのエクステンドの使い方を紹介します まだsassを書いたことがないという方はこちらの記事をどうぞ。所要時間:約30分、ネスト、コメン[…]

sassエクステンドの使い方

引数の初期値を定義する

引数には初期値を定義することが出来ます。定義の仕方は以下の通りです。

 

$変数名: 値
 

cssでは以下の通りです。

初期値を定義したことであとからスタイルを変えたい場合は初期値をいじるだけで済みます。また一方のプロパティには初期値を使用し、別のプロパティには新たに引数を渡すことも可能です。

 

下の例を見てください。

 

第2引数の値に20pxをわたしています。

第2引数のみに値を渡すときは「変数名:値」にする必要があります。第1引数を省略して「 title(, 20px);」とするとエラーになります。

ミックスインのスコープ

main内でミックスインを定義しているので.articleBox__titleにミックスインを使うとエラーとなります。ネストの内側ならエラーにはなりません。よって.main__titleは通常通りコンパイル可能です。

 

@contentでもっと便利に

@contentはプロパティをまとめたミックスインとは少し違います。@contentはネストしたコンテンツをまとめたものです。言葉だと分かりづらいので例を見てください。

 

cssに変換後

 

@contentを使うことでいちいちメディアクエリを書かなくて済みます。このようにネストしたコンテンツを変数のように格納する機能がcontentです。

 

ミックスインで使えない文字

ミックスインで使えない文字は以下の3つです。

 

数字から始まる0main
記号を含むmain@text
ハイフンが連続している–main

最後に

ティロ
ミックスインを使うとよりコードが見やすく、メンテナンス性も上がるのでぜひ使ってみてください!
ペンギンさん
さっそく自分のブログで使ってみる!!

今回、「web製作者のためのSassの教科書 webデザインの現場で必須のCSSプリプロセッサ 改訂2版」という本を参考にしました。

ソースコードの例が豊富でかつわかりやすいのでコードを見るだけで使い方が分かりました。sassを勉強した方はこの本がおススメです。

アマゾンのリンクを貼っておきます。