为什么浏览器会通过媒体查询忽略CSS导入并下载样式表?

Fro*_*dik 6 css css3 media-queries

我有一个简单的导入样式表与媒体查询条件:

<style>@import url(/red.css) (min-width:400px) and (max-width:599px);</style>
Run Code Online (Sandbox Code Playgroud)

我假设浏览器不会使用甚至不下载样式表.但是,样式表会被下载(在Chrome中测试).因此我想问一下,如果有简单的纯CSS方式如何使浏览器不被媒体查询覆盖而忽略并禁止他们下载样式表.

感谢您的任何帮助.

编辑:我会重新说出我的问题.我可以使用CSS3指定应该由浏览器加载的样式表,具体取决于媒体查询条件(视口宽度)吗?

Jor*_*lar 2

正如@BoltClock@Wesley Murch已经提到的,即使不支持或者当时不打算使用它,浏览器也会下载 CSS,因为他需要为能够使用的时间做好准备。这样做。

因此,如果您确实不想在发生某些情况之前下载 CSS 文件,则可以尝试验证页面加载时是否满足某些条件,如果满足,则可以执行“延迟加载”并存储注释代码(在新创建的样式标签子项中输入 8 元素(在本例中就是您的样式标签),这将使浏览器验证新创建的内容并下载 CSS 文件以使样式正常工作。

如果您在尝试实施它时可能遇到任何问题,请随时提出澄清,也许我可以帮助您解决您的问题。

更新: 我已经测试过它并且它可以工作:D,所以您可以使用此代码来启动,希望它有帮助

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>TEST CODE</title>
<script type="text/javascript"> 

    function test(){
        var elems = document.body.childNodes;
        alert(elems);
        for (var i = 0, il = elems.length; i < il; i++) {
           var el = elems[i];
           alert(el.nodeType);
           if (el.nodeType == 8) {
           var style = document.createElement('style');
           style.innerHTML = el.nodeValue;
           document.getElementById("css").appendChild(style);
           break;
           }
        }
    }
 </script >

 <style id="css">
 </style>
 </head>
 <body onload="test()">
 <!--@import url(red.css) (min-width:400px) and (max-width:599px);-->
 </body>
 </html>
Run Code Online (Sandbox Code Playgroud)

注意: 我还没有在样式标签上尝试过这个,只是在图像和类似的东西上尝试过,但我确信(我已经尝试过)如果你评论你的样式标签,浏览器不会下载CSS文件,所以也许这就是完成你想要的事情的方法。