最近,我一直在设计更具响应性的网站,并且我经常使用CSS媒体查询。我注意到的一种模式是,媒体查询的定义顺序实际上很重要。我没有在每个浏览器中进行测试,只是在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:
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;}
}
但是,如果我在最后写的查询为1024x600,浏览器会忽略它并应用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 2012-01-09 18:30:34
如果在没有任何媒体查询的情况下应用相同的规则,然后在小屏幕移动设备的媒体查询中应用相同的规则,并且有一些图像需要下载,则在样式表中。那么会发生什么事情呢,浏览器会在没有媒体查询的情况下忽略规则,并只应用特定的媒体查询规则? – 2017-03-11 18:41:18