補間
補間は、Sassスタイルシートのほぼどこでも使用して、SassScript式の結果をCSSのチャンクに埋め込むことができます。次のいずれかの場所で、式を#{}
で囲むだけです。
- スタイルルール内のセレクター
- 宣言内のプロパティ名
- カスタムプロパティ値
- CSS @規則
@extend
- プレーンCSS
@import
- クォートされたまたはクォートされていない文字列
- 特殊関数
- プレーンCSS関数名
- ラウドコメント
SCSS構文
@mixin corner-icon($name, $top-or-bottom, $left-or-right) {
.icon-#{$name} {
background-image: url("/icons/#{$name}.svg");
position: absolute;
#{$top-or-bottom}: 0;
#{$left-or-right}: 0;
}
}
@include corner-icon("mail", top, left);
Sass構文
@mixin corner-icon($name, $top-or-bottom, $left-or-right)
.icon-#{$name}
background-image: url("/icons/#{$name}.svg")
position: absolute
#{$top-or-bottom}: 0
#{$left-or-right}: 0
@include corner-icon("mail", top, left)
CSS出力
.icon-mail {
background-image: url("/icons/mail.svg");
position: absolute;
top: 0;
left: 0;
}
SassScript内SassScript内のパーマリンク
- Dart Sass
- ✓
- LibSass
- ✗
- Ruby Sass
- 4.0.0以降(未リリース)
LibSassとRuby Sassは現在、SassScriptでの補間の解析に古い構文を使用しています。ほとんどの実用的な目的では同じように機能しますが、演算子の周辺で奇妙な動作をする可能性があります。詳細については、このドキュメントを参照してください。
補間は、SassScriptで、SassScriptをクォートされていない文字列に挿入するために使用できます。これは、動的に名前を生成する場合(たとえばアニメーションの場合)や、スラッシュ区切りの値を使用する場合に特に便利です。SassScriptでの補間は常にクォートされていない文字列を返すことに注意してください。
SCSS構文
@mixin inline-animation($duration) {
$name: inline-#{unique-id()};
@keyframes #{$name} {
@content;
}
animation-name: $name;
animation-duration: $duration;
animation-iteration-count: infinite;
}
.pulse {
@include inline-animation(2s) {
from { background-color: yellow }
to { background-color: red }
}
}
Sass構文
@mixin inline-animation($duration)
$name: inline-#{unique-id()}
@keyframes #{$name}
@content
animation-name: $name
animation-duration: $duration
animation-iteration-count: infinite
.pulse
@include inline-animation(2s)
from
background-color: yellow
to
background-color: red
CSS出力
.pulse {
animation-name: inline-uifpe6h;
animation-duration: 2s;
animation-iteration-count: infinite;
}
@keyframes inline-uifpe6h {
from {
background-color: yellow;
}
to {
background-color: red;
}
}
💡 豆知識
補間は文字列に値を挿入するのに役立ちますが、それ以外の場合はSassScript式ではめったに必要ありません。プロパティ値で変数を使用するためだけに必要というわけではありません。color: #{$accent}
と記述する代わりに、color: $accent
と記述するだけで済みます!
⚠️ 注意!
数値で補間を使用することは、ほとんどの場合悪い考えです。補間は、それ以上の計算に使用できないクォートされていない文字列を返し、単位が正しく使用されることを保証するためのSassの組み込み保護を回避します。
Sassには、代わりに使用できる強力な単位演算があります。たとえば、#{$width}px
と記述する代わりに、$width * 1px
と記述します。あるいは、$width
変数を最初からpx
で宣言することをお勧めします。そうすれば、$width
に既に単位が含まれている場合、不正なCSSをコンパイルする代わりに、適切なエラーメッセージが表示されます。
クォートされた文字列クォートされた文字列のパーマリンク
ほとんどの場合、補間は、式がプロパティ値として使用された場合に使用されるのとまったく同じテキストを挿入します。ただし、1つの例外があります。クォートされた文字列の周りの引用符は(それらのクォートされた文字列がリストにある場合でも)削除されます。これにより、SassScriptで許可されていない構文(セレクターなど)を含むクォートされた文字列を記述し、それらをスタイルルールに補間することが可能になります。
CSS出力
.example {
unquoted: string;
}
⚠️ 注意!
この機能を使用してクォートされた文字列をクォートされていない文字列に変換するのは魅力的ですが、string.unquote()
関数を使用する方がはるかに明確です。#{$string}
の代わりに、string.unquote($string)
と記述してください!