Nee*_*eel 10 html css css3 media-queries
我知道有两种方法可以添加媒体查询:
HTML链接:
<LINK REL="stylesheet" TYPE="text/css" MEDIA="(max-width: 1024px)" HREF="foo.css">
Run Code Online (Sandbox Code Playgroud)
CSS:
@media all and (max-width: 1024px) {
......
}
Run Code Online (Sandbox Code Playgroud)
我已阅读文档,我理解这两种方法之间的明显区别.但是,以下是2个问题我怀疑你是否可以澄清:
1)浏览器是否以不同于CSS媒体查询的方式处理HTML媒体链接?我的意思是,我知道如果在css中添加CSS媒体查询,所有css文件都会被下载到所有设备,并且当浏览器解释编译的css时,只有相应的媒体查询才会生效.但是如果媒体链接是用HTML添加的,那么它是否意味着浏览器只会在匹配指定宽度的设备时才下载foo.css?与Css媒体查询相比,浏览器处理HTML媒体链接的方式是否存在差异,或者它们是否完全相同但只是添加到网页的不同方式?
2)假设foo.css还有1024px以外的较小宽度的媒体查询,如下所示:
body {
padding: 10px;
}
@media all and (max-width: 900px) {
body {
padding: 5px;
}
}
@media all and (max-width: 800px) {
body {
padding: 0px;
}
}
Run Code Online (Sandbox Code Playgroud)
如果使用HTML链接添加上述文件,如下所示:
<LINK REL="stylesheet" TYPE="text/css" MEDIA="(max-width: 1024px)" HREF="foo.css">
Run Code Online (Sandbox Code Playgroud)
这会成为浏览器看待它的嵌套媒体查询吗?我不明白的是,如果使用html链接添加上述内容,我不知道浏览器是否真的会像这样看起来无效:
@media all and (max-width: 1024px) {
body {
padding: 10px;
}
@media all and (max-width: 900px) {
body {
padding: 5px;
}
}
@media all and (max-width: 800px) {
body {
padding: 0px;
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如果我在使用HTML媒体链接添加的css文件中有进一步的媒体查询,那有效吗?
编辑: 我在桌面上使用chrome查看了开发人员工具,我可以看到即使从桌面设备浏览也会下载平板电脑文件:
1)因此对于问题1,假设所有浏览器都包含较旧的浏览器并且移动浏览器执行相同的操作即使下载所有文件即使它们被放置在HTML链接中也是安全的吗?
2)对于问题2,我可以看到当浏览器屏幕调整为平板电脑宽度时,chrome确实使用了平板电脑css内的媒体查询.在html中以1024px链接的css文件被视为media ="(max-width:1024px)".但那么,这不意味着平板电脑的css文件中的媒体查询实际上是嵌套的媒体查询吗?虽然它有效但不是逻辑错误吗?是否有一些更严格的浏览器不认为这是有效的?
Sal*_*n A 11
以下是W3C 对此的评价:
media属性说明资源适用于哪种媒体.该值必须是有效的媒体查询.
[...]
但是,如果链接是外部资源链接,则media属性是规定性的.当媒体属性的值与环境匹配且其他相关条件适用时,用户代理必须应用外部资源,否则不得应用它.
注意:外部资源可能在此范围内定义了进一步限制,以限制其适用性.例如,CSS样式表可能包含一些@media块.本规范不会覆盖此类进一步的限制或要求.
我使用以下标记测试了Chrome中的行为:
<link rel="stylesheet" href="ge-960.css" media="screen and (min-width: 960px)">
<link rel="stylesheet" href="lt-960.css" media="screen and (max-width: 959px)">
Run Code Online (Sandbox Code Playgroud)
@media
样式表中的所有匹配规则