求解释,W3C 官网 CSS 引入方式

2011-02-25 01:12:31 +08:00
 dimlau
是这一段:

<link rel="stylesheet" href="/2008/site/css/minimum" type="text/css" media="handheld, all" />
<style type="text/css" media="print, screen and (min-width: 481px)">
/*<![CDATA[*/
@import url("/2008/site/css/advanced");
/*]]>*/
</style>
<link href="/2008/site/css/minimum" rel="stylesheet" type="text/css" media="handheld, only screen and (max-device-width: 480px)" />

第一,既然有 all ,前面再加个 handheld 有必要么?
第二,为什么第二句要用这种形式,而不是和其他两句一样直接 <link> ?
第三,既然第三句引入的 CSS 文件和第一句相同,而且第一句的 media 设置成了 all ,那么第三句还有必要么?
5173 次点击
所在节点    问与答
8 条回复
gonghao
2011-02-25 01:26:56 +08:00
坐等规范解读、理解高手解释~
manhere
2011-02-25 01:38:11 +08:00
实现按需下载css文件,避免浪费手持设备带宽
manhere
2011-02-25 01:39:05 +08:00
参见CSS手册:Media Queries
dimlau
2011-02-25 09:42:15 +08:00
@manhere 呃……我是说第一条的 media 值是 all ,当然也包括手持设备了吧,然后第三条又专门针对手持设备重写了一次引用。既然两次引用的文件是相同的,是不是浪费?

顺便又来了问题。如果第一句和第三句引用的是不同文件。设备会不会根据先后顺序预先判断 CSS 先后顺序造成的覆盖情况,从而实现忽略前边那个 media 值是 all 的文件而只加载第三条引用的 CSS ?
fireyy
2011-02-25 11:20:11 +08:00
第一个是为了应付opera mini的特殊情况,它有个"fit to screen"的功能,默认情况一般是开启的,这样如果只设置all,它会忽略你的css,所以要额外在前面加一个handheld
第二个是因为某些浏览器不支持@import 或者 min-width,所以可以用这一点忽略一些不支持的浏览器
第三个是 为了安全起见,当出现一些手持浏览器都支持前两条规则,但是我们又不想它应用/2008/site/css/advanced样式的时候,我们再用2008/site/css/minimum覆盖advanced的某些样式
SolidZORO
2011-02-25 11:26:51 +08:00
@fireyy 高手现身。果然是真正接触过多浏览器的人呐。
dimlau
2011-02-25 13:04:31 +08:00
@fireyy 哦,原来如此。
顺便,您也来了~哈哈

又顺便,单就 iPhone 来说,其实它是读了两遍 2008/site/css/minimum 的吧?
fireyy
2011-02-25 20:12:57 +08:00
@dimlau 对,我潜水较多

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/8904

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX