
今回はSass行くよ!@extend行くよ!
@mixinとどう区別したらいいのか分からない!って人もヒントになればいいと思うよ!てか答えはまとめに書いたよ!
@extendの基本的な使い方
そもそも@extendっていうのはセレクタの継承が目的で、なんども同じことを書くのは止めようねってことだと思います。
実例をあげるとこんな感じ↓
.hoge {
border: 1px solid #777;
margin: 0 auto;
}
.fuga01 {
@extend .hoge;
}
.fuga02 {
@extend .hoge;
background: #ccc;
}
↓コンパイル後
.hoge, .fuga01, .fuga02 {
border: 1px solid #777;
margin: 0 auto;
}
.fuga02 {
background: #ccc;
}のようになり、.hogeのborderとmarginを何度も書かなくて済むわけですね。
そこでちょっとレベルアップしてみましょう。
@extendをPlaceHolderクラスにしてみる
先ほどの例で言うと.hogeはCSSに出力しなくていい場合も出てきます。
要するに.hogeを変数っぽく使うわけです。
%hoge {
border: 1px solid #777;
margin: 0 auto;
}
.fuga01 {
@extend %hoge;
}
.fuga02 {
@extend %hoge;
background: #ccc;
}
↓コンパイル後
.fuga01, .fuga02 {
border: 1px solid #777;
margin: 0 auto;
}
.fuga02 {
background: #ccc;
}%hogeのように頭に「%」を付けるのをPlaceHolderクラスと言い、hogeは出力されなくなります。
@extendも「%」を付けるのを忘れずに。
まとめ
実はこの使い方、@mixinの使い方その物だとお思いでしょうが、@mixinでのPlaceHolderクラスのような使い方はNGらしく、@mixinは変数を備えた使い方をしなければならないようです。
「[Sass]@mixinでスタイルを使いまわしてもっと楽しよう」の後半部分が正解。
Sassって奥が深いですね。

