最近、私は反応がよく、頻繁にCSSメディアクエリを使用しているサイトを設計してきました。私が気づいた1つのパターンは、メディアクエリが定義される順序が実際に重要であるということです。私はすべてのブラウザでテストしませんでしたが、Chromeだけでテストしました。この動作の説明はありますか?場合によっては、サイトが正常に動作しないときに、それがクエリであるかクエリが書き込まれる順序であるかが不明なときに、時には不満を募らせます。ここでCSSでメディアクエリの順序が重要なのはなぜですか?
は例です:
HTML
<body>
<div class="one"><h1>Welcome to my website</h1></div>
<div class="two"><a href="#">Contact us</a></div>
</body>
はCSS:私は最後に1024x600のクエリを書いた場合
body{
font-size:1em; /* 16px */
}
.two{margin-top:2em;}
/* Media Queries */
@media (max-width: 480px) {
.body{font-size: 0.938em;}
}
/* iphone */
@media only screen and (-webkit-min-device-pixel-ratio: 2) {
body {font-size: 0.938em;}
}
/*if greater than 1280x800*/
@media (min-width: 1200px) {
.two{margin-top:8em;}
}
/*1024x600*/
@media (max-height: 600px) {
.two{margin-top:4em;}
}
/*1920x1024*/
@media (min-height: 1020px) {
.two{margin-top:9em;}
}
/*1366x768*/
@media (min-height: 750px) and (max-height: 770px) {
.two{margin-top:7em;}
}
しかし、ブラウザは無視しCSSの開始時に指定されたマージン値(margin-top:2em)を適用します。
/* Media Queries - Re-arranged version */
@media (max-width: 480px) {
.body{font-size: 0.938em;}
}
/* iphone */
@media only screen and (-webkit-min-device-pixel-ratio: 2) {
body {font-size: 0.938em;}
}
/*if greater than 1280x800*/
@media (min-width: 1200px) {
.two{margin-top:8em;}
}
/*1920x1024*/
@media (min-height: 1020px) {
.two{margin-top:9em;}
}
/*1366x768*/
@media (min-height: 750px) and (max-height: 770px) {
.two{margin-top:7em;}
}
/*1024x600*/
@media (max-height: 600px) {
.two{margin-top:4em;}
}
私のメディアクエリーの理解が正しい場合は、順序は問題ではありませんが、そう思われます。理由は何でしょうか?
ありがとうございます。私はこのような単純な論理が夜のために一緒に私の睡眠を台無しにするだろうと想像しませんでした。ありがとう。 – dsignr
スタイルシートでは、同じルールがメディアクエリなしで適用されてから、小さな画面のモバイルデバイス用のメディアクエリ内に適用され、ダウンロードするイメージがいくつかある場合。何が起こるのでしょうか?ブラウザはメディアクエリなしのルールを無視し、特定のメディアクエリのルールのみを適用しますか? –