HTML电子邮件是一堆变幻莫测的电子邮件。我的问题在于上标。
我的代码需要在某些桌面客户端中工作:
- Outlook 2000
- Outlook 2003
- Outlook 2007
- Outlook 2010
以及某些基于网络的电子邮件客户端(Firefox、Chrome、Explorer):
- Gmail
- 雅虎
- AOL
- Internet Explorer 7浏览器(lol)
目前我遇到的最好的跨浏览器代码是:
<sup style="font-size:11px; line-height:0; vertical-align:3px;">
这在除了Outlook2007和2010之外的所有应用中都非常有效,因为在这些应用中,字体大小缩小到几乎无法阅读。其他代码,如:
<sup style="position:relative; vertical-align:baseline; bottom:4px;">
这段代码在所有方面都很好,除了Gmail,它去掉了导致上标位于基线的位置。
在尝试了几十种不同的样式组合后,以上两种组合提供了最一致的字体大小和行高。
问题
是否有一些代码片段可以放在头部,告诉电子邮件使用特定的代码或类,这取决于电子邮件在哪个客户端打开?我知道Gmail更喜欢内联样式而不是类,所以也许我可以内联地应用Gmail漂亮的代码,但如果它在Gmail之外打开,就会取消内联样式,回到类上。
您可以使用条件注释专门针对Outlook:
<!--[if gte mso 9]>
/* Your Outlook-specific CSS goes here. */
<![endif]-->
使用mso标记或style标记的组合。
mso标签将只针对Outlook或特定版本的Outlook,而Gmail不会从样式标签中呈现任何内容。
我会为gmail设置内联样式,然后在样式标记中使用!important
来覆盖内联声明。如果要在样式标记中为非Outlook的其余电子邮件客户端声明多个样式,请使用mso条件标记。
我强烈建议在这种情况下使用类似预编译器的实用程序。它将自动内联css类,并执行其他有助于解决跨客户端问题的优化。如果你经常做这类事情,甚至还有一个api可以自动化这个过程。
我能够在不使用条件语句的情况下解决我的问题,我觉得这值得分享,以防其他人处理同样的问题。
我拿着我原来的<sup>
,换成了<span>
因此,在没有任何变化的情况下,在所有内容中创建<sup>
风格的外观时,应该使用以下内容作为上标:
<span style="font-size:85%; line-height:0; vertical-align:3px;"></span>
这在上述所有客户端中都进行了测试,所有内容看起来都完全相同。