在智能手机上停止下载图像

Posted

技术标签:

【中文标题】在智能手机上停止下载图像【英文标题】:Stop image from being downloaded when on a smartphone 【发布时间】:2012-05-10 11:19:27 【问题描述】:

我正在为一家公司开发一个响应式网站,其中全尺寸网站有一个幻灯片,背景是图片(Backstretch 完全填满了屏幕)。由于图像的大小非常大(大约 300k),我正在寻找一种方法来阻止在智能手机上查看网站时加载图像。

我已经通过媒体查询在 backstretch div 上应用了 display: nonevisibility: hidden。它隐藏了图像,但似乎仍在下载它们。有没有一种聪明的方法可以让浏览器完全忽略它们?

【问题讨论】:

【参考方案1】:

visibilitydisplay 与是否下载图像无关。您唯一能做的就是将所有图像作为背景图像,并使用媒体查询将它们完全排除在备用样式表中。

【讨论】:

我用来显示背景图像的 Backstretch jQuery 插件将图像放在结束 body 标记正上方的 div 中。我尝试使用 background-size 来缩放背景,但这对 Google Chrome 来说太耗电了(旧版浏览器不支持)。我已经上传了页面here。有没有办法在不移除 Backstretch 的情况下做到这一点?【参考方案2】:

如果您通过 CSS 设置图像,那么有一种方法。

如果您将 div 设置为 display:none,它仍然会下载,但是如果您将父 div 设置为显示 none,那么它不会加载,直到媒体查询触发设置

CSS

.parent display:block;
.background background-image:url(myimage.png);

@media only screen and (max-width:480px) 
.parent display:none;

HTML

<div class="parent">
   <div class="background"></div>
</div>

向 Tim Kadlec 致敬 - http://timkadlec.com/2012/04/media-query-asset-downloading-results/

【讨论】:

这仍然会加载图像。正确吗? @praaveen 仅在媒体查询触发时(因为图像容器的父元素已设置为不显示)【参考方案3】:

另一种选择是采用移动优先的方法,为移动设备定义默认样式,并在媒体查询中覆盖这些样式以获得更大的屏幕宽度。

类似下面的东西会阻止图像被下载到移动设备上,同时也避免了对不必要的包装 div 的需要:)

html

<div class="container">
    <!-- slideshow container -->
</div>

CSS:

/* default to no background image */
.container 
    background-image: none; 


/* add it in for wider screens */
@media screen and (min-width: 500px) 
    .container 
        background-image: url(myimage.png);
    

【讨论】:

以上是关于在智能手机上停止下载图像的主要内容,如果未能解决你的问题,请参考以下文章

除非缓存,否则 SVG 图像不会在智能手机上加载

人体姿势估计/匹配在智能手机上

无法在智能手机上打开 APK 文件

制作可在 Facebook 上运行并作为智能手机应用程序的游戏

内置传感器---智能手机(资料)

大新闻!Ubuntu 将停止开发 Unity,默认桌面回归 GNOME,同时宣布放弃智能手机业务