[解決済み] Sass .scss: ネストと複数クラス?
2022-03-25 19:24:59
質問
現在のプロジェクトでSass(.scss)を使用しています。
以下の例です。
HTML
<div class="container desc">
<div class="hello">
Hello World
</div>
</div>
SCSS
.container {
background:red;
color:white;
.hello {
padding-left:50px;
}
}
これは素晴らしい機能です。
ネストされたスタイルを使用しながら、複数のクラスを扱うことはできますか?
上のサンプルでは、こんなことを言っています。
CSS
.container.desc {
background:blue;
}
この場合、すべての
div.container
は通常
red
しかし
div.container.desc
は青になります。
の中に入れ子にするにはどうすればよいですか?
container
をSassで使用することはできますか?
どのように解決するのですか?
を使用することができます。
親セレクタ参照
&
を指定すると、コンパイル後に親セレクタに置き換わります。
あなたの例では
.container {
background:red;
&.desc{
background:blue;
}
}
/* compiles to: */
.container {
background: red;
}
.container.desc {
background: blue;
}
は
&
は完全に解決されるので、親セレクタがネストしている場合は、ネストを解決してから
&
.
この表記は、次のような書き方で使われることが多いようです。 擬似要素および擬似クラス :
.element{
&:hover{ ... }
&:nth-child(1){ ... }
}
ただし
&
を事実上好きな位置に配置することができます。
*
ということで、以下のようなことも可能です。
.container {
background:red;
#id &{
background:blue;
}
}
/* compiles to: */
.container {
background: red;
}
#id .container {
background: blue;
}
ただし、この方法では入れ子構造が崩れるため、スタイルシートで特定のルールを探す手間が増える可能性があることに注意してください。
*: の前に空白以外の文字を置くことはできません。
&
. の直接連結はできません。
selector
+
&
-
#id&
を実行するとエラーが発生します。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン