Sass @mixin と @include
- 前のページ Sass @import
- 次のページ Sass @extend
Sass Mixin
@mixin
指令を使うことで、全サイトで再利用可能な CSS コードを作成できます。
作成 @include
指令は、mixin(参照)を使用するためです。
定義 Mixin
mixin は @mixin
指令定义的。
Sass @mixin 语法:
@mixin name { property: value; property: value; ... }
以下の例では、"important-text"という名前のmixinを作成します:
SCSS 文法:
@mixin important-text { color: red; font-size: 25px; font-weight: bold; border: 1px solid blue; }
ヒント:
Sassでのハイフンとアンダースコアに関するヒント:ハイフンとアンダースコアは同じと見なされます。
これは、 @mixin important-text { }
および @mixin important_text { }
同じmixinと見なされます!
Mixinの使用
@include
この命令はmixinを参照するために使用されます。
Sass @include mixin文法:
selector { @include mixin-name; }
したがって、上記に作成されたimportant-text mixinを含めたい場合は:
SCSS 文法:
.danger { @include important-text; background-color: green; }
Sassのトランスレータは上記のコードを通常のCSSに変換します:
CSS出力:
.danger { color: red; font-size: 25px; font-weight: bold; border: 1px solid blue; background-color: green; }
Mixinは他のMixinも含むことができます:
SCSS 文法:
@mixin special-text { @include important-text; @include link; @include special-border; }
変数をMixinに渡す
Mixinsはパラメータを受け入れます。この方法で、mixinに変数を渡すことができます。
以下は、パラメータを持つmixinの定義方法です:
SCSS 文法:
/* 二つのパラメータを持つmixinの定義 */ @mixin bordered($color, $width) { border: $width solid $color; } .myArticle { @include bordered(blue, 1px); // 二つの値を持つmixinの呼び出し } .myNotes { @include bordered(red, 2px); // 二つの値を持つmixinの呼び出し }
注意:パラメータが変数として設定され、それがボーダーアクセス属性の値(色と幅)として使用されます。
コンパイル後、CSSは以下のようになります:
CSS出力:
.myArticle { border: 1px solid blue; } .myNotes { border: 2px solid red; }
Mixinのデフォルト値
もしくは、mixin 変数にデフォルト値を定義することもできます:
SCSS 文法:
@mixin bordered($color: blue, $width: 1px) { border: $width solid $color; }
その後、mixinを参照する際に変更する値を指定するだけで済みます:
SCSS 文法:
.myTips { @include bordered($color: orange); }
Mixinを使用してプロバイダープレフィックスを設定する
Mixinの別の良い用途は(ブラウザ)プロバイダープレフィックスです。
これは変換の例です:
SCSS 文法:
@mixin transform($property) { -webkit-transform: $property; -ms-transform: $property; transform: $property; } .myBox { @include transform(rotate(20deg)); }
コンパイル後、CSS は以下のようになります:
CSS 文法:
.myBox { -webkit-transform: rotate(20deg); -ms-transform: rotate(20deg); transform: rotate(20deg); }
- 前のページ Sass @import
- 次のページ Sass @extend