仅为移动设备加载图像

Posted

技术标签:

【中文标题】仅为移动设备加载图像【英文标题】:Load an image only for mobile device 【发布时间】:2017-08-14 07:27:13 【问题描述】:

我想知道我的首页是否可以加载仅适用于移动用户的图像。我知道使用 javascript 是可能的,但我想知道我是否可以仅使用 CSS 来实现相同的目标。我试图做一些研究,但找不到我要找的东西。我不是指根据屏幕大小调整图像大小,而是加载适合移动设备的图像。

【问题讨论】:

你的意思是使用html img或使用css背景。 @frnt 使用 css 背景 :) 【参考方案1】:

利用media querybackground-image改成不同的screen resolutions如下,

div
  width:100%;
  height:400px;
  background:url('http://placehold.it/350x150/f22/fff');
  background-size:100% 100%;

@media screen and (max-width : 480px)
 div
  background:url('http://placehold.it/480x150/f12/fff');
  background-size:100% 100%;
 

@media screen and (max-width : 320px)
 div
  background:url('http://placehold.it/320x150/e12/fff');
  background-size:100% 100%;
 
<div></div>

检查这个jsFiddle。

【讨论】:

@S.Reyes 选择主页 div 并使用媒体查询在不同的断点更改背景图像 url。 感谢您的回答! :) 我会尝试实施这样的方法! :D 欢迎@S.Reyes :-)【参考方案2】:

您可以根据屏幕大小使用媒体查询来应用类。

#img 
    display: none;


/* Large Devices, Wide Screens */
    @media only screen and (max-width : 1200px) 



/* Medium Devices, Desktops */
@media only screen and (max-width : 992px) 



/* Small Devices, Tablets */
@media only screen and (max-width : 768px) 



/* Extra Small Devices, Phones */ 
@media only screen and (max-width : 480px) 
   #img
     display: block;
   



/* Custom, iPhone Retina */ 
@media only screen and (max-width : 320px) 


【讨论】:

您好,谢谢您的回答!但是,如果我采用这种方法,它不会将所有图像加载到页面并降低性能吗?我想知道是否使用纯 css,我可以将所需的图像加载到页面。 无论如何,您的所有图像都会在开始时加载,您需要优化图像,这样无论您在移动设备或桌面上显示什么,它们都不会减慢网站速度。但这应该允许您在任何屏幕尺寸上隐藏和显示您需要的内容。【参考方案3】:

是的,这是可能的。您可以使用媒体查询。示例 CSS:

#yourimage 
    display: none;


@media (max-width: 500px) 
    #yourimage 
        display: block;
    

此代码适用于 html 图像。这是一个 JSFiddle:

https://jsfiddle.net/vqfLokpa/

只需点击运行,然后开始缩小浏览器窗口。

【讨论】:

您好,感谢您的回复。场景是,我有两个图像。其中之一是用于桌面网站的,而且相当大。但是对于较小的屏幕(手机),我想加载该图片的较小版本。 然后只需将第一张图片设置为display: none; 并将新图片设置为display: block; 如果您不确定如何实现它,我使用 JSFiddle 编辑了帖子。 但这不会同时加载两个图像并降低性能吗?因为在这种情况下,它是我的首页,上面有很多媒体。 :) 好吧,浏览器只加载它适用的 CSS。因此,您可以对桌面进行媒体查询并将图像放在那里。然后它不会在手机上加载。 啊,我明白了!谢谢老兄:) 我想这可能就是我要找的东西:D【参考方案4】:

根据您对@NullDev 的评论,您需要创建一个大小合适的 div 并将图像作为背景图像应用到元素上,以调节通过 CSS 加载的内容。

例如:

HTML:

<div id="image"></div>

CSS:

#image 
  position: relative;
  width: 400px;
  height: 400px; 
  background-image:url('/path/to/image');
  background-size: cover;
  background-repeat: no-repeat;

然后应用媒体查询:

@media only screen and (max-width : 480px) 
   #image
     background-image:url('/path/to/mobile/image');
   

我希望这会有所帮助。

【讨论】:

以上是关于仅为移动设备加载图像的主要内容,如果未能解决你的问题,请参考以下文章

如何防止桌面网站上的图像在移动设备上加载?

防止图像在移动设备上加载

仅为 iOS 设备加载 JS 脚本?

我的网站不会在 iPhone 上加载图像,但会在所有其他浏览器、移动设备或桌面设备上加载

使用颤振在移动设备上缓存图像

阻止视频在移动设备的后台加载