スタイル規則
スタイル規則は、CSSと同様に、Sassの基礎です。そして、それらは同じように機能します。セレクタを使用してスタイルを設定する要素を選択し、それらの要素の外観に影響を与えるプロパティを宣言します。
SCSS構文
.button {
padding: 3px 10px;
font-size: 12px;
border-radius: 3px;
border: 1px solid #e1e4e8;
}
Sass構文
.button
padding: 3px 10px
font-size: 12px
border-radius: 3px
border: 1px solid #e1e4e8
CSS出力
.button {
padding: 3px 10px;
font-size: 12px;
border-radius: 3px;
border: 1px solid #e1e4e8;
}
ネストネスト パーマリンク
しかし、Sassはあなたの生活を楽にしたいと考えています。同じセレクタを何度も繰り返すのではなく、あるスタイル規則を別のスタイル規則の中に書くことができます。Sassは、外側の規則のセレクタと内側の規則のセレクタを自動的に結合します。
SCSS構文
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
}
li { display: inline-block; }
a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}
Sass構文
nav
ul
margin: 0
padding: 0
list-style: none
li
display: inline-block
a
display: block
padding: 6px 12px
text-decoration: none
CSS出力
nav ul {
margin: 0;
padding: 0;
list-style: none;
}
nav li {
display: inline-block;
}
nav a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
⚠️ 注意!
ネストされた規則は非常に役立ちますが、実際にどれだけのCSSを生成しているかを視覚化するのが難しい場合があります。ネストが深くなるほど、CSSを提供するために必要な帯域幅が増え、ブラウザがそれをレンダリングするために必要な作業が増えます。セレクタは浅く保ちましょう!
セレクタリストセレクタリスト パーマリンク
ネストされた規則は、セレクタリスト(つまり、カンマ区切りのセレクタ)の処理に優れています。それぞれの複合セレクタ(カンマの間にあるセレクタ)は個別にネストされ、その後、セレクタリストに再び結合されます。
CSS出力
.alert ul, .alert p, .warning ul, .warning p {
margin-right: 0;
margin-left: 0;
padding-bottom: 0;
}
セレクタ結合子セレクタ結合子 パーマリンク
結合子を使用するセレクタもネストできます。結合子は、外側のセレクタの末尾、内側のセレクタの先頭、または2つの間の samostatně に配置できます。
SCSS構文
ul > {
li {
list-style-type: none;
}
}
h2 {
+ p {
border-top: 1px solid gray;
}
}
p {
~ {
span {
opacity: 0.8;
}
}
}
CSS出力
ul > li {
list-style-type: none;
}
h2 + p {
border-top: 1px solid gray;
}
p ~ span {
opacity: 0.8;
}
高度なネスト高度なネスト パーマリンク
ネストされたスタイル規則で、子孫結合子(つまり、単純なスペース)で順番に結合する以上のことをしたい場合は、Sassが対応します。詳細については、親セレクタのドキュメントを参照してください。
式展開式展開 パーマリンク
式展開を使用して、変数や関数呼び出しなどの式から値をセレクタに挿入できます。これは、ユーザーが渡すパラメータからセレクタを作成できるため、Mixinを記述する場合に特に役立ちます。
SCSS構文
@mixin define-emoji($name, $glyph) {
span.emoji-#{$name} {
font-family: IconFont;
font-variant: normal;
font-weight: normal;
content: $glyph;
}
}
@include define-emoji("women-holding-hands", "👭");
Sass構文
@mixin define-emoji($name, $glyph)
span.emoji-#{$name}
font-family: IconFont
font-variant: normal
font-weight: normal
content: $glyph
@include define-emoji("women-holding-hands", "👭")
CSS出力
@charset "UTF-8";
span.emoji-women-holding-hands {
font-family: IconFont;
font-variant: normal;
font-weight: normal;
content: "👭";
}
💡 豆知識
Sassは、式展開が解決された後にのみセレクタを解析します。これは、解析されないことを心配することなく、式展開を使用してセレクタの任意の部分を安全に生成できることを意味します。
式展開と親セレクタ `&`、 `@at-root` ルール、およびセレクタ関数を組み合わせることで、セレクタを動的に生成する際に強力な力を発揮できます。詳細については、親セレクタのドキュメントを参照してください。