根据移动设备或桌面设备更改图像 HTML & CSS

Changing Image depending on Mobile or Desktop HTML & CSS

所以我正在尝试根据用户使用的是移动版还是桌面版来更改图像。

我有两张不同的图片,一张最后有 "m" 的是桌面版的迷你版,另一张是移动版的。但是我无法让它工作。

这是一些代码:

HTML(使用 Razor,因此 C# 代码有效):

<img id="ifMobile1" src="images/arts/IMG_1447m.png" alt="">

CSS:

#ifMobile1 {
    background-image: url(/images/arts/IMG_1447m.png)
}

@media all and (max-width: 499px) {
    #ifMobile1 {
        background-image: url(/images/arts/IMG_1447.png)
    }
}

请帮帮我。

你不能那样改变图片来源。您需要将 div 与原始图片一起用作背景图片才能正常工作。

<div id="ifMobile1" style="background-image: url(images/arts/IMG_1447m.png);"></div>

更新:请查看http://jsfiddle.net/p96denv4/2/

这是你会做的。

HTML

<div id="ifMobile1"></div>

CSS

#ifMobile1 {
    background-image: url(/images/arts/IMG_1447m.png)
    width: set your width  ;
    height: set your height  ;
}

@media all and (max-width: 499px) {
    #ifMobile1 {
        background-image: url(/images/arts/IMG_1447.png)
        width: set your width  ;
        height: set your height  ;
    }
}

如果你想活在未来,<picture>元素是必经之路。它的浏览器支持仍然很差(目前只有基于 blink 的浏览器和 firefox beta)。好消息是它退回到了一个愚蠢的 <img> 标签,所以如果不支持它,除了加载速度会慢一点之外没有任何坏处。

好的,它是如何工作的?

此示例的大部分内容取自 html5rocks,并进行了一些修改

一个图片元素是这样的:

<picture>
  <source 
    media="(min-width: 650px)"
    srcset="images/kitten-stretching.png">
  <source 
    media="(min-width: 465px)"
    srcset="images/kitten-sitting.png">
  <img 
    src="images/kitten-curled.png" 
    alt="a cute kitten">
</picture>

http://googlechrome.github.io/samples/picture-element/ 上亲自尝试示例,只需调整浏览器的宽度即可看到小猫的变化。

图片元素最酷的地方在于它允许您为每个 <source> 元素指定媒体查询。如果没有匹配到 source,或者图片元素不受支持,则显示最后一个 <img>

另一个技巧是有两个 img 标签,并根据设备隐藏一个。

HTML

<img id="img1" src="images/arts/IMG_1447.png" alt="">
<img id="img2" src="images/arts/IMG_1447m.png" alt="">

CSS

#img1 {display:block;}
#img2 {display:none}

@media all and (max-width: 499px) {
    #img1 {display: none;}
    #img2 {display: block;}
}
img#id {
    content:url(http://example.com/image.png);
}

这可能对您有用,请在相应的媒体查询中定义您的每个图像。