Późno projektowałem witryny, które są bardziej responsywne i często używam zapytań o media CSS. Zauważyłem, że kolejność, w jakiej definiowane są zapytania o media, ma znaczenie. Nie testowałem go w każdej przeglądarce, ale tylko w Chrome. Czy istnieje wytłumaczenie tego zachowania? Czasami robi się frustrujące, gdy witryna nie działa tak, jak powinna i nie masz pewności, czy jest to zapytanie, czy kolejność, w jakiej jest napisane zapytanie.Dlaczego kolejność zapytań o media ma znaczenie w CSS?
Oto przykład:
HTML
<body>
<div class="one"><h1>Welcome to my website</h1></div>
<div class="two"><a href="#">Contact us</a></div>
</body>
CSS:
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;}
}
Jednak Gdybym napisał zapytanie do 1024x600 w ostatnim, przeglądarka będzie ignorować it i zastosuj wartość marginesu określoną podczas uruchamiania 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;}
}
Jeśli moje rozumienie zapytań o media jest poprawne, kolejność nie powinna mieć znaczenia, ale wygląda na to, że tak. Jaki mógł być powód?
Dziękuję. Nigdy nie wyobrażałam sobie, że taka prosta logika zrujnuje mi sen na noce razem. Dzięki. – dsignr
W arkuszu stylów, jeśli te same reguły są stosowane bez zapytania o media, a następnie w zapytaniu o media dla urządzeń mobilnych na małym ekranie i istnieje kilka obrazów do załadowania. Co się stanie, czy przeglądarka zignoruje reguły bez zapytania o media i zastosuje tylko określone reguły zapytań o media? –