HTML电子邮件-桌面和移动设备的不同图像

HTML电子邮件-桌面和移动设备的不同图像,html,css,email,html-email,Html,Css,Email,Html Email,我想我已经尝试了所有可能的现有解决方案,所以我想问一下,是否有人知道显示以下内容的最佳方式: 简单(可点击或不可点击)图像 为桌面和移动设备使用不同的图像 与最流行的电子邮件客户端兼容 这里发布的解决方案:似乎是迄今为止最好的,但它有一个小问题,这两个图像总是下载(我不是说显示),无论你是在手机上还是在桌面上 <a href="http://www.emailonacid.com"> <span id="switcher"> <img id="hou

我想我已经尝试了所有可能的现有解决方案,所以我想问一下,是否有人知道显示以下内容的最佳方式:

  • 简单(可点击或不可点击)图像
  • 为桌面和移动设备使用不同的图像
  • 与最流行的电子邮件客户端兼容
这里发布的解决方案:似乎是迄今为止最好的,但它有一个小问题,这两个图像总是下载(我不是说显示),无论你是在手机上还是在桌面上

<a href="http://www.emailonacid.com">
  <span id="switcher">
    <img id="houdini" src="http://www.sample.com/desktop.jpg" alt="">
  </span>
</a>

 <style>
  @media only screen and (max-device-width: 489px) {
    span[id=switcher] {
      display:block;
      background-image: url(http://www.sample.com/mobile.jpg) !important;
      background-repeat: no-repeat !important;
      background-position: center !important;
      width: 300px !important;
      height: 250px !important;
    }
    img[id=houdini] {display: none !important;}1
  }
</style>

@仅介质屏幕和(最大设备宽度:489px){
span[id=开关柜]{
显示:块;
背景图片:url(http://www.sample.com/mobile.jpg)!重要;
背景重复:不重复!重要;
背景位置:中心!重要;
宽度:300px!重要;
高度:250px!重要;
}
img[id=houdini]{display:none!重要;}1
}
“img”标签始终下载图像,即使图像未显示(显示:无)

我尝试过许多其他方法,在桌子上使用背景图像,但这似乎需要微软的VML代码,解决方案看起来非常混乱,有时甚至无法在android上工作

有人能帮忙吗


谢谢

对于桌面和移动设备,没有办法拥有不同的图像,也没有办法不下载它们作为电子邮件。这需要Javascript,这在任何主要的电子邮件客户端中都不受支持


我还想指出,图像交换,无论你使用哪种方法,在一些主要的邮件应用程序上都不受支持,尤其是Gmail。从设计的角度来看,最好的做法是在桌面和移动设备上使用相同的图像。

这是可能的,有点困难。Gmail可能是自那以来最大的障碍,因此不支持媒体查询

首先,有一个警告:Google Apps webmail+Mobile Gmail将呈现相同的效果,但我们可以让常规Gmail webmail与众不同

Gmail从所有元素中删除class和id属性,但保留一些其他属性不变:
style
title
lang
width
height
alt
href
因此我们可以使用类似于
[lang~=“x-houdini”]{display:none!important;}

因此,使用移动Gmail作为你想要显示的内容的基础,然后你可以覆盖常规Gmail网络邮件,方法是将其定位为隐藏移动Gmail图像并显示常规Gmail网络邮件图像

同样,这在谷歌应用程序webmail上不起作用,它将显示与Gmail应用程序相同的内容


解释如何针对特定版本的Gmail。如果你沿着这条路走下去,有问题,值得一读

正如其他人提到的,隐藏图像永远不会稳定。我的解决方案是创建一个小型服务器端脚本,为不同的设备提供不同的图像。我认为这是最稳定、最稳健的解决方案

您可以从请求的标题中识别操作系统、设备和屏幕宽度,尽管任何浏览器/电子邮件客户端都可能发送虚假信息

我们使用此包解析用户代理信息: 我们可以用它获取这些信息:


根据设备字段,您可以提供不同的图像。

让图像宽度为100%怎么样? 我试过了,它似乎适用于不同的宽度。 我甚至尝试了chrome的响应模式,即使在iphone大小的设备上,它似乎也能工作,尽管图像质量没有那么清晰

<html>
<head>
    <title>ResponsiveImage</title>
</head>
<body>
    <img src="Tulips.jpg" width="100%">
</body>
</html>

响应图像

我不是100%确定没有办法做到这一点。。。。让我们看看是否有人提出了解决方案:-),但无论如何,谢谢你的回答。(是的,我意识到兼容性问题,这绝对是需要记住的)不幸的是,这是正确的答案。电子邮件可以做很多很酷的事情,但它通常附带大量的胶带和口香糖,并且需要多种程度的优雅降级,以确保在所有电子邮件客户端上都能显示出吸引人的内容。图像交换就是其中之一。谢谢你的回答。我对Gmail没有任何问题,因为webmail和app都不使用媒体查询,所以它们只显示桌面图像。有趣的是,Gmail的目标从来都不知道。然而,不幸的是,这对我的问题没有帮助…谢谢你的回答。这很有趣,我从来没有想过,这绝对是一个应该考虑的可能的解决方案。我将等待,看看是否有其他解决方案出现,否则我将选择您的解决方案作为最佳解决方案。您是否尝试过使用媒体查询来更改跨度的bg图像-并将标签一起保留?-因此,实际上,一个css规则与bg图像,然后媒体查询覆盖该bg图像用于移动?媒体查询在所有电子邮件客户端中都不受支持,因此,如果图像仅显示媒体查询代码,它将不会出现在所有电子邮件客户端上。因此,@asimovwasright,并非所有客户端都支持背景图像,(尤其是像Windows上的Microsoft Outlook这样的旧版本)因此,这是不可能的。无论如何,你可以控制分发映像的服务器,然后你可以使用http嗅探来基于UA为映像提供服务。(虽然我自己从未尝试过,但我很确定这是可能的。):-)@asimovwas在这里也一样,以前从未测试过,但可能是一种解决方案,正如gyula所建议的:-)…值得一试。谢谢您的回答。只有一张100%宽度的图像与我尝试做的不同:桌面版和移动版电子邮件有两张不同的图像。根据其他人的回答,我的理解是,你必须采取一种方式,即样式和内容保持不变,但图像大小不同(例如,图像中心对齐)。当手机或桌面的浏览器请求im时,这种方式