美文网首页
邮件Html踩坑

邮件Html踩坑

作者: 文者字清 | 来源:发表于2020-03-10 22:12 被阅读0次

2020.03.10

从昨天中午开始开发邮件模板,到今天下午两点,终于搞定了主流邮箱的样式兼容问题。中间花了13小时,因为没有经验,所以踩了很多坑,总算趟出了一条路。

由于各大邮件系统所支持的HTML模板对css兼容性好坏不一,导致我开发时用的一些css样式属性完全不生效。经过不断的尝试,终于开发出了一套能够兼容主流邮箱的邮件模板。下面记录一下遇到的坑点,以及解决办法。

布局

table 布局,只能用table布局!所有和布局相关的属性基本都失效了,margin、padding、position在各个邮箱里支持的很不均衡,所以基本不能用了。所以对于垂直居中对齐,水平居中对齐,用table可以实现。虽然实现起来很麻烦,经常需要td标签里面再嵌套table,并且每个table标签最好设置属性border="0" cellpadding="0" cellspacing="0" width="100%" ,以保证样式的稳定,尤其是width属性,对于table和td最好都明确设置具体的值,否则会出现某些邮件里是100%,某些邮件里就是自动撑宽的样式。

对于想要padding效果的样式,可以采用嵌套table来实现,借助 td 标签的 align=“center” valign=“middle” 属性来保证居中:

<table border="0" cellpadding="0" cellspacing="0" width="100%" >
    <tbody>
      <tr>
        <td style="width: 100%;" align="center">
          <table width="80%">
            <!-- 这个table就居中了,并且与父容器有20%的间距 -->
          </table>
        </td>
      </tr>
    </tbody>
  </table>

也可以用border来实现:

<table border="0" cellpadding="0" cellspacing="0" width="100%" >
    <tbody>
      <tr>
        <td style="width: 100%; border: 10px solid #FFF" align="center">
          <!-- 这个容器就居中了,并且与父容器有10px的间距 -->
        </td>
      </tr>
    </tbody>
  </table>

对于想要类似margin的间距,就用空的tr标签,指定height即可。

对于table的使用,顺便说一下,只有td标签能嵌套其他元素,td里面可以写div、a标签等等,也可以嵌套table标签,这点要注意下。这次开发,让我对table稍微熟悉了。以前见到table总是发慌,现在不怕它了。

CSS3属性不要用

对于想要圆角的样式,border-radius属性不能用,很多邮箱都支持,但是也有不支持的。你以为你用了,它不支持就只是圆角不生效,展示成直角么?不支持的邮件里,对于border-radius的处理很尴尬,会展示类似于锯齿样式,很难看。

对于vw单位也不要用了,中国的一些邮箱支持的还可以,俄罗斯的有些邮箱不支持。

总之,css3的样式属性基本不要用了,邮件模板通用的开发守则就是table布局。

对于邮件模板HTML开发总结就这么多,后面再踩坑会继续补充,希望能帮到即将踩坑的你。

相关文章

网友评论

      本文标题:邮件Html踩坑

      本文链接:https://www.haomeiwen.com/subject/zrmwdhtx.html