1

在我们的网站上,我们根据显示器是否为视网膜动态加载样式表。现在,我们在页面中插入的document.write每一个都使用不同的 css 文件,如果显示是视网膜的话。<link href="stylesheet.css">

但是,这会损害性能,因为它会导致 css 文件同步加载,因为浏览器无法解析 javascript 以在前一个文件完成之前加载下一个文件。我相信,如果我们利用现代浏览器的提前查看和异步获取资源的能力——换句话说,如果我们并行加载 CSS 文件,我们可以减少页面加载时间。

我目前的解决方案是为每个要加载的样式表创建一个<link id="link-tag-id" href="">标签,紧随其后的是一个确定视网膜状态的脚本,然后用适当的文件填写引号,如下所示:

document.getElementById("link-tag-id").setAttribute("href", "retina-stylesheet.css")

这似乎工作正常,当我在 Chrome 开发人员工具以及 WebPageTest.org(运行 Chrome、Firefox 和 IE)上检查网络瀑布时,样式表确实是并行加载的。但是,它似乎有点hacky。<link>我想知道创建具有空href属性的标签是否有任何危险,如果有,它们是什么?

更广泛地说,关于如何动态和异步加载 CSS 是否有任何其他建议?

谢谢你的帮助!

编辑:我刚刚发现这也有效:

document.getElementById("link-tag-id").href = "retina-stylesheet.css"

4

1 回答 1

0

您可以在样式表中使用媒体查询来确定显示器是否是视网膜显示器,然后加载所需的 CSS。

http://css-tricks.com/snippets/css/retina-display-media-query/

http://mobile.smashingmagazine.com/2010/07/19/how-to-use-css3-media-queries-to-create-a-mobile-version-of-your-website/

于 2013-07-27T00:14:19.220 回答