EDM模板编写踩坑指南(非响应式,纯table有源码)
如果问你table布局,你肯定会嗤之以鼻?什么table布局?不是早已经淘汰了吗?但是如果让你写EDM邮件模板,table布局相对来说是最好的选择。
如果让你立刻写EDM,你在网上搜的话,得到的信息相对较少,但是又很懵的话,建议你看看这篇文章,让你30分钟之内入门并开始写, 需要源码再私我吧~
或许有人会问EDM是什么,Email Direct Marketing的缩写,即电子邮件营销。EDM模板就是你邮箱中的广告邮件,其实就是在邮件中写网页。但是EDM模板怎么书写。如果你在网上搜,或许你会搜到以下书写要点:(以下要点来自知乎)
CSS只可以使用内联样式表,如:style=“margin:0“
设计之初遵循:图上无文本,文本后无底纹的规则
- 使用table而非div
- 所有图片使用 img标签,如:<img style="display:block" src=""/>
- 可以适当使用占位符space.gif
- 多用<br/>换行而非<p>
- 整体最佳宽度为:550-600px
- 不使用javascript
- 正式发送给用户前,多次测试
- 负边距部分邮箱会被屏蔽,不能用
可是看到这些,对于新手小白来说仍旧不友好,什么是table布局??到底哪些能用哪些不能用?即使你去问别人,别人告诉你也是多测试多测试。可是既要兼容PC也要兼容移动,移动端既要兼容安卓也要兼容ios,之后也得注意不同端口打开的适配,比如,适配微信打开和用手机自带浏览器打开或者主流邮箱打开比如:网易邮箱大师、腾讯邮箱等等。
之前有人告诉我你能兼容 outlook的话,兼容其他大部分不成问题了。如果我们想弄清楚怎么才能支持这么多不同端口打开的话,不是本文的主要讲述点。
因为只要你遵循table写法,完全可以避开前人走过的深坑,快速在相应时间内完成工作。
好了,下面开始讲什么是table布局呢?
有些小伙伴可能要说了美团的EDM是table+div,网易的一些邮件是图片加链接,等等,我说明一下,本文写的是非响应式的纯table布局。首先说一下table的组成:表格
- <tr>:表示表格的行
- <td>:表示表格的列
- <tbody>:表示表格的主体内容
- 属性cellpadding:规定单元边沿与内容之间的空白
- 属性cellspacing:规定单元格之间的空白
- align:表格相对周围元素的对齐方式。
基础知识参考链接:http://www.w3school.com.cn/tags/tag_table.asp
现在我们知道什么是table布局了,那么该如何不用div来实现css中的一些效果?css世界中张鑫旭对于table布局中有说,table比css2出现的还要早,这就是为什么一些css的布局在table中不适用。所以我们可以使用P标签来实现块元素div 的效果。来,让我们模拟整个EDM书写过程。
- table 布局写法:这是最外层的table
<table align="center" border="0" cellpadding="0" cellspacing="0" height="100%" width="100%">
</table> - 利用td实现空白书写,而不是margin,代码为上边距和左边距的写法
<tr>
<td height="34" valign="top"></td>
</tr> <tr>
<td width="20px"> </td>
</tr>
方法二:直接在td中加左边距,与第一种是一样的,第一种优点是整齐,当边距一致时可复用,把边距与内容分开.
<tr>
<td width="" valign="top" style="padding-left:55px;font-family:Arial, Helvetica, sans-serif;font-size:16px;line-height:14px;color:#333333">
<p>更多讲师</p>
<p>持续更新中......</p>
</td>
</tr>
参考国外的模板写法如下:
<table class="remove-left" style="font-size: 0;line-height: 0;border-collapse: collapse;" align="left" border="0" cellpadding="0" cellspacing="0" width="1">
<tbody>
<tr>
<td style="font-size: 0;line-height: 0;border-collapse: collapse;" height="3" width="0">
<p style="padding-left:15px;mso-table-lspace:0;mso-table-rspace:0;"></p>
</td>
</tr>
</tbody>
</table>
3. 邮箱被自动识别颜色变为浏览器给的默认颜色怎么办?
放在a便签里,并设置style
<tr>
<td>
<p style="margin-top: 0; margin-bottom:0;text-decoration:none;font-size:12px;color:#ffffff;font-family:'Microsoft YaHei';opacity:0.8">
联系邮箱:<a href="" style="text-decoration:none;color:#ffffff">lasia961@163.com</a>
</p>
</td>
</tr>
4. IOS中,电话被safari自动识别为电话变为默认的蓝色并且可以点击打电话,与设计稿色调不一致怎么办
如果你去百度的话,结果如下,让你加入私有属性
safari有私有属性可以避免,但是我们是edm 不能加入meta
<meta name="format-detection" content="telephone=no" />
敲黑板,下面!
看到了没先用span转一下,在 span后面加入一些字母,将字母颜色设置为底色,即背景色
<tr>
<td>
<p style="margin-top: 0; margin-bottom: 0;font-size:12px;color:#ffffff!important;font-family:'Microsoft YaHei';opacity:0.8">
咨询电话:<span>0</span><span>0</span><span style="display:none">crfebetf</span><span>0</span><span>-</span><span>0</span><span>0</span><span style="display:none">crfebetf</span><span>0</span>-<span>0</span><span>0</span><span style="display:none">crfebetf</span><span>0</span><span>0</span><span style="color:#2e3133">abc</span>
</p>
</td>
</tr>
5. 安卓中出现,5位数字以上被一些手机邮箱或者浏览器识别电话,并带有蓝色之类的,点击到拨打界面,如何解决
用span转一下
<tr>
<td align="center" valign="top">
<p style="text-decoration:line-through;font-size: 12px; line-height: 14px; color: #666566; font-family:'Microsoft YaHei',Arial, Helvetica, sans-serif; text-transform: uppercase; padding: 0; margin: 0;">
¥<span>0</span><span>0</span><span>0</span><span>0</span><span>0</span>
</p>
</td>
</tr>
6. 在chrome看没问题的,在outlook看有些元素被跟预期的不一样怎么办?
这个时候,打开审查元素,如果元素被加上了外边距 则在这个元素的样式中加上
<td>
<p style="margin-top:0;margin-bottom:0;height:12px;display:block;color:#e63453;font-size:12px;width:25px;border-top:2px solid #e63453 !important;margin-left: 31px; padding-left: 48px;"> </p>
</td>
以上代码告诉你如何用p标签划线,其实就是把p标签当div一样用.然后去掉外边距。
7. 以上部分是我遇到在网上也搜不到解决方式的问题。踩过太多坑,保守一点没坏处。因为你不一定知道到底是什么原因导致手机屏幕显示的差异,不同邮箱打开的差异。
8. 邮箱跳转的mailtoy与<wbr>,认识了一个新标签,过来分享下。
- html4中,br/ 表示换行,br表示必须换行。
- 而wbr,意思是在浏览器窗口或父级窗口宽度足够的情况下,不换行;在宽度不足的情况下,在加了wbr处主动换行。
- 当正常情况下英文宽度过小,不足以在行末书写完一个词时,就将行末整个词放到下一行,实现换行,但是加入上面位置的wbr时,软换行就能收主动拆分单词,可以在支持HTML5的浏览器中测试(IE系列除了9都不支持,可以用Chrome)。
- 这个wbr好像对字符型的语言用处挺大,但是对于想中文这种字,貌似没多大用处。
<a href="mailto:lasia961@163.com" target="_blank">lasia961@163<wbr>an.com</a>
EDM模板编写踩坑指南(非响应式,纯table有源码)的更多相关文章
- C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式
C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...
- Spring WebSocket踩坑指南
Spring WebSocket踩坑指南 本次公司项目中需要在后台与安卓App间建立一个长连接,这里采用了Spring的WebSocket,协议为Stomp. 关于Stomp协议这里就不多介绍了,网上 ...
- Nuxt.js的踩坑指南(常见问题汇总)
本文会不定期更新在nuxt.js中遇到的问题进行汇总.转发请注明出处,尊重作者,谢谢! 强烈推荐作者文档版踩坑指南,点击跳转踩坑指南 在Nuxt的官方文档中,中文文档和英文文档都存在着不小的差异. 1 ...
- Java 热更新 Groovy 实践及踩坑指南
Groovy 是什么? Apache的Groovy是Java平台上设计的面向对象编程语言.这门动态语言拥有类似Python.Ruby和Smalltalk中的一些特性,可以作为Java平台的脚本语言使用 ...
- 树莓派4B踩坑指南 - (15)搭建在线python IDE
今天想在树莓派上自己搭一个在线的python IDE,于是找到了一篇教程--Fred913大神的从头开始制作OJ-在线IDE的搭建 自己尝试动手做了一下, 还是发现不少细节需要注意, 记录在此 如果不 ...
- 正则表达式 test 踩坑指南
正则表达式 test 踩坑指南 test 只能使用一次,第二次返回的是错误结果! reg = /edg|edge/g; /edg|edge/g reg.test(`edg`) true reg.tes ...
- Taro 开发踩坑指南 (小程序,H5, RN)
Taro 开发踩坑指南 (小程序,H5, RN) css taro 如何展示多行文本省略号 https://www.cnblogs.com/xgqfrms/p/12569057.html UI 设计稿 ...
- 小程序 & taro 踩坑指南
小程序 & taro 踩坑指南 微信开发者工具, 不支持 react bug https://github.com/NervJS/taro/issues/5042 solution just ...
- Boostrap响应式与非响应式
非响应式布局 在使用非响应式布局时,在<head>标签中需要加入一下内容,其中最主要的是non-responsive.css文件 <head> <meta http-eq ...
随机推荐
- ubuntu下搭建gtk+编程环境
首先gtk+项目主页为: http://www.gtk.org/ gtk+现在有2和3两种版本,使用 sudo apt-get install gnome-core-devel 可以一次性安装2个版本 ...
- mybatis源码之StatementHandler
/** * @author Clinton Begin */ public interface StatementHandler { Statement prepare(Connection conn ...
- Sencha touch 2 入门 -------- DataView 显示服务器端JSON文件数据
今天学习了下DataView如何显示JSON文件数据,废话不多说,直接贴代码: 首先看下文件目录: 然后看下我们要处理的JSON文件,bookInfo.json. { "success&qu ...
- 【省带宽、压成本专题】深入解析 H.265 编码模式,带你了解 Apple 全面推进 H.265 的原因
过去几年,又拍云一直在点播.直播等视频应用方面潜心钻研,取得了不俗的成果.我们结合点播.直播.短视频等业务中的用户场景,推出了"省带宽.压成本"系列文章,从编码技术.网络架构等角度 ...
- JVM学习--(四)垃圾回收算法
我们都知道java语言与C语言最大的区别就是内存自动回收,那么JVM是怎么控制内存回收的,这篇文章将介绍JVM垃圾回收的几种算法,从而了解内存回收的基本原理. stop the world 在介绍垃圾 ...
- Dubbo性能调优参数及原理
本文是针对 Dubbo 协议调用的调优指导,详细说明常用调优参数的作用域及源码. Dubbo调用模型 常用性能调优参数 参数名 作用范围 默认值 说明 备注 threads provider 200 ...
- 记住这个网站:服务器相关数据统计网站 http://news.netcraft.com/
http://news.netcraft.com/ 需要参考现在服务器相关数据,可以上这个网站. 当然google趋势也是一个可选得备案. 有一个数据统计更全面的: http://w3techs.co ...
- 解决ExtJs Uncaught TypeError: c is not a constructor错误
ExtJs项目使用sencha app build编译以后,浏览时很容易抛出Uncaught TypeError: c is not a constructor的错误,而且会加载没有名称的js,例如 ...
- add two nums
问题描述: 给定两个链表,计算出链表对应位置相加的和,如果和大于10要往后进位.用链表返回结果.其实上是一种大数加法.可以把一个大数倒着写存入链表,然后两个链表相加就是所需要的大数相加的和 输入 2 ...
- angular2 安装 打包成发布项目过程
安装之前要有typings和typescript全局已经安装好 安装命令新版为npm install -g @angular/cli 原来的angular-cli为老版的,我安装失败了 安装之后新建一 ...