カスケードは、CSS を特別で強力にするものです。しかし、メディア クエリの場合、オーバーラップが問題に見えることがあります。
次の CSS を検討してください ( CSS メディア クエリ オーバーラップの継続ルール):
/* Standard - for all screens below 20em */
body { color: black; font-size: 1em; }
/* Query A - slightly wider, mobile viewport */
@media (min-width: 20em) and (max-width: 45em) {
body { color: red; } /* supposed to be unique for this width */
}
/* Query B - everything else */
@media (min-width: 45em) {
body { font-size: larger; } /* because viewport is bigger */
}
したがって、画面の幅がちょうど 45em の場合、45em のオーバーラップは標準の CSS カスケードに従って処理されます。
- すべての
max-width: 45em
定義が最初に適用されます。 - 以降はすべて
min-width: 45em
適用されます。
次の 2 つの条件を考慮してください。
- 通常、すべてのテキストは になりますが
black
、クエリ Aは一意であり、color: red
. - クエリ Bはより大きなビューポート用であるため、そのテキストには CSS があり
font-size: larger
ます。
したがって、正確に 45em の幅では、大きな赤いテキストが表示されます。これを回避するための最善の解決策は何でしょうか?
2 つの可能性があります。
Query B
color: black
に含まれるテキストを再宣言しますが、将来を変更することを選択した場合、2 つの宣言を管理することになります。(もちろん、この 1 行のコードではそれほど問題はありませんが、他にも多くの宣言とセレクターがあると想像してください。)color
max-width: 799px
やのようなピクセル値を使用してオーバーラップを避けmin-width: 800px
ますが、ピクセルを使用しています。それぞれ 49.9375em と 50em になる可能性があると思います。しかし、デフォルトが 16em ではなくなり、何かが丸められた場合はどうなるでしょうか? そして、そのギャップで何が起こるかはまだわかりません. (時空連続体を壊すブラックホール?)
どちらにも欠点があります...他のアイデアはありますか?