您知道可以在移动版 Windows Phone 7 设备上定位 Internet Explorer 浏览器吗?
<!--[if IEMobile]>
Displayed only on Internet Explorer Mobile on Windows Phone 7
<![endif]-->
<![if !IEMobile]>
Anything else
<![endif]>
当然可以1。感谢 Allison Wagner 告诉我这件事。
通过媒体查询处理移动样式现在更流行一些,我通常也认为这是处理问题(浏览器无关)的更好方法,但它存在经典问题:浏览器需要下载它不需要的资源(例如,在移动设备上时下载桌面版本的 CSS)。
您知道什么超级酷?如果我们可以在条件注释中使用媒体查询。
<!-- [if (min-device-width: 481px)]>
<![endif]—>
这将结合媒体查询的语法和功能,以及条件注释仅加载我们需要的特定资源的能力,在带宽方面保持精简。
1 请注意上面条件注释的第一块中稍微不同的语法。前者称为降级隐藏注释,后者称为降级显示注释。技术术语。
不必要的代码。没有 Windows Phone 用户。
不必要的帖子。你错了。
不必要的带宽。结束。
你们都错了。只有一个使用 Windows Phone 7 的人。比尔·盖茨。其他人则聪明到不会使用,所以我同意带宽的说法。(
实际上,Sam,你错了。我在这里告诉你,使用 Windows Phone 的人不止一人。事实上,我可以告诉你,每天每秒都有不止一人使用 Windows Phone。
你们所有人都需要停止对微软产品如此消极和封闭。总而言之,Windows 7 是一款近乎完美的操作系统。Windows Phone 非常出色且流畅。
最后,你们需要欣赏学习的艺术。这是一篇教你一些东西的文章。Chris 花时间自己学习并教你。所以你也需要花时间学习,因为你永远不知道何时会用到它。此外,谁不热爱学习新事物呢?
不必要的评论(我没什么可贡献的)
嘿,Chris!好文章,我以前不知道!如果您能写一篇文章(或将其与关于仅 IE 样式表的文章结合起来),描述条件语句是什么,语法的不同部分是什么,降级隐藏注释和降级显示注释的区别是什么,
!
在条件语句中表示“非”的用法是什么,那对我和(可能还有其他读者)来说非常有帮助。再次感谢您让我知道即使在移动平台上,Internet Explorer 也有条件语句=)
让我帮你谷歌一下……
http://lmgtfy.com/?q=conditional+statements
不客气;-)
@peter
当 Aaron 提到“降级隐藏注释和降级显示注释的区别,
!
在条件语句中表示‘非’的用法”之类的事情时,你可能可以假设他不需要他建议的那篇文章,但他认为这对网站来说是个好主意。我知道,我知道,发布 lmgtfy 的链接真的很有趣。“如果我们可以在条件注释中使用媒体查询”
这叫做 link 标签!
<link rel=”stylesheet” type=”text/css” href=”/style.css”
media=”screen and (min-device-width: 481px)”>
但你的意思是内容,对吧……我羞愧地低下头
这可以防止 CSS 应用,直到它满足媒体查询,但不会阻止下载。
@Chris 你确定吗?如果我错了,请随时纠正我,但我认为浏览器会看到你的链接样式表列表,并且只有在 link 标签中的相应媒体查询与浏览器/设备的功能/规范匹配时才会下载它们?
显然,如果媒体查询位于一个包含所有内容的样式表中,那么是的,浏览器会下载全部内容并使用它们应该使用的那部分。
制作一个完整的桌面样式网站,然后在此之后添加媒体查询以删除/更改内容,这会因为带宽原因而变得很糟糕。
这就是为什么我认为构建“移动优先”,然后为越来越强大的功能/屏幕尺寸添加额外的样式表,效率更高且更节省带宽。这样,移动浏览器只需下载它们需要的部分,而更强大的浏览器则下载完整的桌面版本,正如 Luke Wroblewski 提倡的那样(不仅仅是为了这个原因)。
我想我不确定。如果它能这样工作那就太好了。需要测试。
好吧,我当然希望它能像这样工作,否则我目前正在做的所有这些巧妙的移动优先 CSS 就会变得毫无意义!:)
如果事实并非如此,我真的很惊讶。这会破坏媒体查询的全部目的。
我相当肯定 CSS(以及相关的背景图像)会在该示例中加载。我想我读到过关键字“only”对某些设备有影响。无论如何,我将把所有这些都确定下来,并为仅在可能需要这种带宽使用量的设备上加载 CSS 和样式化图像找到一个可行的解决方案。完成后,它应该在 http://wiki.doliver.co.uk/website_creation:mobile-friendly_method 上。
我正在研究使用 http://www.handsetdetection.com/,以便仅根据服务器端机制将样式表插入标记中。
在 Chrome 10 中进行的超快速测试表明,无论是否满足媒体查询,CSS 都会被下载。请参阅:http://cl.ly/5Nna(也尝试了“only”关键字)
如果我是个赌徒,我会说这是因为当浏览器突然满足媒体查询时,它可以快速切换,而不是需要在之后下载资源。
进退两难。
看来我在这件事上说得太早了。可惜,我真的很认为它们就是这样工作的(并且应该这样工作),尽管我可以看到在准备好用于更改匹配条件(旋转手机,更改浏览器宽度)的样式时它具有优势。
就像你说的:进退两难。两种行为都有优点和缺点。
想知道这是否是由不同的浏览器供应商以不同的方式完成的(我不会感到惊讶),或者他们是否就某些事情达成了一致(哈哈!),或者下载行为是否在 W3C 规范中的某个地方?也许都不是。
不错,如果正确执行,这应该可以正常工作..迫不及待。
Modernizr 现在提供了一个自定义下载选项,可以使用 modernizr.load (yepnope.js) ,允许使用条件语句异步加载 javascript、css、图像等。
http://modernizr.github.com/Modernizr/2.0-beta/
因此,通过这样做,您可以嗅探浏览器代理并提供移动 css 文件而不是桌面 css。您必须在您的网站上运行 JS 以提供移动友好内容,但 JS 在大多数移动浏览器上默认启用;)
您还可以包含您实际使用的模块,以避免在带宽方面产生任何不必要的开销。
好文章,Chris :)
干杯
Chris,
这可以防止 CSS 应用,直到它满足媒体查询,但不会阻止下载。
在我看来,针对浏览器愚蠢的行为进行优化不是一个好主意。
浏览器预先知道某个特定资源是否需要下载。例如,手机永远不需要下载盲文或浮雕媒体类型的资源。此外,链接标签用于许多不同类型的资源(系列中的上一个/下一个、目录等),因此它已经必须根据链接标签中的信息进行区分。媒体查询,如设备高度、设备宽度、设备纵横比、单色、颜色、颜色索引、分辨率、扫描和网格,总是在渲染任何内容之前就知道。在某些设备中,纵横比、方向和其他属性是固定的。无论如何,浏览器应该只下载它可能应用的那些资源。
假设浏览器在决定下载哪些资源时会使用常识,然后对内容进行编码,这样默认的媒体查询(没有指定任何内容的查询)就是最小的、旧的、脾气暴躁的、有点智能的手机浏览器兼容的 CSS,这感觉更合理(而且代码气味更少)。然后使用某个版本的以下代码指定你的桌面浏览器:
>link rel=”stylesheet” type=”text/css” href=”/desktop.css”
media=”screen and (min-device-width: 900px)” /<
或者任何你喜欢的方案。这感觉比将行为编码到注释中更好。
很高兴知道!
只是一个快速说明:“向下兼容”条件注释的首选语法如下:
这里有解释。
这纯粹是为了验证的原因(除非你使用此语法,否则它在 HTML5 或 XHTML 中将无法验证)。当然,我不知道这是否会影响 Windows Phone,但使用更正后的语法似乎是合理的。
如果所有你需要实现的,让我们称之为分辨率相关的 CSS 加载,是移动浏览器检测,我想如果你以 php 格式提供你的样式表,你可以做到。这是一个非常糟糕的解决方案,我没有时间测试它(我肯定会测试),但你可以这样做:
@media screen and (max-width: 300px) {
<?php include('mobile.css'); ?>
}
@media screen and (min-width: 301px) {
<?php include('desktop.css'); ?>
}
无论如何,这只是一个快速的思考,对我来说太 hacky 了。
忘记我上一篇帖子。在我点击提交的下一秒,我意识到它什么也没做:S 需要睡觉,这是肯定的 :)
@media screen and (max-width: 300px) {
}
@media screen and (min-width: 301px) {
}
我永远不会使用这个。
如果有人在非 WebKit 或其他兼容 CSS3 的浏览器上使用手机浏览网站,他们理应看到网站看起来很糟糕。
我从未见过客户关心任何移动设备,当然除了 iPhone 之外。
也许只是我,但我从未在野外见过 Windows 7 手机,只在商店里见过,独自坐在展示台上,没有人关心甚至看它。可怜的微软……至少他们做对了 Xbox。
* { display: none; }
这是一个双赢的局面 :)
* { display: none; }
这是一个双赢的局面 :)
抱歉重复发布。没有预览按钮来预览:\
对于 IE 10+ 来说,这现在已弃用了吗?
在当前的 Windows Phone 固件上不起作用。因此没有必要,令人困惑并导致沮丧——人们在未经检查的情况下链接到此内容并不会有所帮助……