javascript - 使用媒体查询进行移动优化的背景而不是内联图像?

标签 javascript css image mobile media-queries

我通过媒体查询对我的网站进行了移动优化。一切看起来都如我所愿,但正在下载不必要的图像(因为它们被 css 隐藏),从而减慢了页面加载时间。

对此最简单的解决方案似乎是用带背景图像的 div 替换尽可能多的内联图像。然后我可以用移动版本的媒体查询 css 隐藏 div。

我知道这有潜在的缺点,在这篇文章中有很好的概述: When to use IMG vs. CSS background-image?

因此公司 Logo 、员工照片等将保留为内联图像。

我的方法是否有任何我没有考虑过的问题?我阅读了很多关于移动优化的文章,尤其是关于媒体查询的内容,但我还没有听说有人这样做,尽管这似乎是一个非常明显的解决方案,其中图像可以内联或作为背景。

请注意,我用 iPhone 和 Android 做了一些实验(我正在等待获得一些黑莓手机)并且我知道要停止下载背景图像我需要将 display none 设置为 div 的父级,而不是具有背景图像本身的 div。

注 2,在理想的世界中,网站可能首先构建为移动设备,但在这种情况下(通常在其他情况下),原始网站的修改量是有限的。

谢谢

最佳答案

不幸的是,对于您要解决的问题,没有很好的答案。

首先,您可以选择将所有内容从 img 标签移动到 css 背景图像。正如您所注意到的,您必须小心这样做会丢失语义。

但即使您可以在不损失语义值(value)的情况下移动到背景图像,它仍然不会 100% 可靠。去年夏天我写了一系列测试。上周我重新测试了它们,为我们书中关于移动优先响应式网页设计的章节做准备。测试位于 http://www.cloudfour.com/examples/mediaqueries/image-test/ .

不幸的是,Android 无法满足所有这些技术。您可以看到它通过 Blaze 的移动测试下载了图像文件的多个副本: www.blaze.io/mobile/result/?testid=111031_96_316

2011 年 11 月 3 日更新:我目前正在尝试协调我在 Blaze 上看到的结果与我亲自使用同一设备看到的结果之间的不一致结果。在我的本地 Nexus S 上,它通过了第五个 css 测试,该测试通过将 img 放入媒体查询中来限制它们。我查看了 apache 日志并确认该设备仅下载一张图像而不是用于测试 5 的两张图像。Blaze 正在运行 2.3.3。我的手机运行的是 2.3.6。

这适用于 Android 2.2、2.3 和 3.0。希望 4.0 将包含防止此行为的 webkit 修复程序: bugs.webkit.org/show_bug.cgi?id=24223

顺便说一句,这似乎与您关于测试将父 div 设置为 display:none 在 Android 上的评论相冲突。如果您得到不同的结果,我很想听听。

如果您将它们保留为 img 标签,您有什么选择?关于这个主题,我写了一个由多个部分组成的系列。本系列的第二部分深入介绍了不同的技术: http://www.cloudfour.com/responsive-imgs-part-2/

同样,没有一个解决方案是好的。如果你想要一些简单的东西并且大部分时间都能工作,我会去 adaptive-images.com。或者通过 Sencha.io SRC 路由图像,直到我们对这个问题有更好的解决方案。

顺便说一句,很抱歉有这么多实际上不是链接的链接。这是我对 stackoverflow 的第一 react ,它只允许我包含两个链接。

关于javascript - 使用媒体查询进行移动优化的背景而不是内联图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7835377/

相关文章:

javascript - AngularJS ng-click 不触发

java - 如何为 ImageSpan 设置背景颜色和下划线

javascript - 弹出模态窗口时如何禁用背景

java - 在java中压缩/缩小图像文件

Android ACTION_VIEW 多张图片

javascript - VISJS : save manipulated data to json

javascript - 在字符串开头匹配子字符串的最佳方法(有一些限制)

javascript - 可访问性: `tabindex="- 1"` 是否意味着该元素对屏幕阅读器不可见(类似于 `aria-hidden="true"`)

html - 所有列的表格边框高度相等

css-only 100% div height with dynamic height footer