[解決済み] Sassでメディアクエリからセレクタを拡張する
2022-11-26 08:31:50
質問
アイテムクラスとコンパクトなモディファイアクラスがあります。
.item { ... }
.item.compact { /* styles to make .item smaller */ }
これでいいんです。しかし
@media
クエリを追加して、強制的に
.item
クラスがコンパクトになるように強制するクエリです。
最初に考えたら、こんなことをやってみた。
.item { ... }
.item.compact { ... }
@media (max-width: 600px) {
.item { @extend .item.compact; }
}
しかし、これでは以下のようなエラーが発生します。
外部セレクタを @media 内から拡張することはできません。できるのは extend selectors within the same directive.
SASSを使用して、スタイルのコピー&ペーストに頼ることなく、どのようにこれを達成するのでしょうか?
どのように解決するのですか?
簡単な答えは、Sass がそのためのセレクタを構成できない(または構成しない)ので、できません。 メディア クエリの内側にいて、メディア クエリの外側にあるものを拡張することはできません。 確かに、セレクタを合成しようとする代わりに、単にそのコピーを取ってくれればいいのですが。 しかし、それはそうではないので、できません。
ミキシンを使用する
メディアクエリの内部と外部でコードのブロックを再利用するようなケースで、なおかつそれを拡張できるようにしたい場合は、mixinとextendクラスの両方を書きましょう。
@mixin foo {
// do stuff
}
%foo {
@include foo;
}
// usage
.foo {
@extend %foo;
}
@media (min-width: 30em) {
.bar {
@include foo;
}
}
メディアクエリ内のセレクタを外側から拡張する
これはあなたのユースケースにはあまり役立ちませんが、別の選択肢です。
%foo {
@media (min-width: 20em) {
color: red;
}
}
@media (min-width: 30em) {
%bar {
background: yellow;
}
}
// usage
.foo {
@extend %foo;
}
.bar {
@extend %bar;
}
Sass がこの制限を解除するまで待つ (あるいは自分でパッチを当てる)
この問題については多くの議論が進行中です (追加する意味のあることがない限り、これらのスレッドに貢献しないでください: メンテナは、ユーザーがこの機能を望んでいることをすでに認識しており、それをどのように実装するか、どの構文にすべきかが問題なのです)。
関連
-
[CSSチュートリアル】よくある2D変換を5つ実現するCSS
-
[CSSチュートリアル】CSSもこんな風に遊べる?気まぐれグラデーションの極意
-
[CSSチュートリアル】CSSでemを開く正しい方法 詳細へ
-
[CSSチュートリアル】background-positionプロパティのパーセンテージ値の使い方を探る
-
[CSSチュートリアル】CSSプロパティ*-gradientの有用性を探る
-
[解決済み] メディアクエリ。デスクトップ、タブレット、モバイルをターゲットにする方法とは?
-
[解決済み] CSS メディアクエリ: max-width OR max-height
-
[解決済み] メディアクエリは画面ではなく、div要素に基づいてサイズを変更できますか?
-
[解決済み] Twitter Bootstrap 3:メディアクエリを使うには?
-
[解決済み] CSS3メディアクエリでSass変数を使用する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[CSSチュートリアル】純粋なCSSでWebページの内容をコピーできないようにする方法
-
[CSSチュートリアル】overflow:hiddenの役割を解説(overflow hidden、clear float、外周マージンの崩れを解決する)。
-
[CSSチュートリアル】CSS擬似要素::マーカー解説
-
[CSSチュートリアル】CSSのシングルDivの描画スキル
-
[CSSチュートリアル】波動効果を生み出すCSSのアイデア
-
[CSSチュートリアル]CSSは、メソッドのさまざまな記事の分割行のスタイルの要約を達成するために
-
[CSSチュートリアル】新しいCSS:whereと:is擬似クラス関数とは?
-
[CSSチュートリアル】CSSで炎のエフェクトを記述する方法
-
[CSSチュートリアル]CSS気まぐれボーダーアニメーション効果
-
[css3] CSS3を使ってヘッダーアニメーション効果を作成する