【发布时间】:2018-09-29 22:01:13
【问题描述】:
我正在经历尝试制作在 Outlook 中看起来可以接受的 HTML 电子邮件模板的恐惧,并很快接近 hara-kiri 的点。
我有一个基本的表格设置:三列,所有内容都在中间一列。侧面的柱子只是为了提供间距。该表的width 为 100%,因此它占据了阅读窗口的整个宽度。所以本质上是这样(省略了所有特定于 Outlook 的杂物):
<table>
<tbody>
<tr>
<td class="leftsidespacer"></td>
<td class="maincontent">
<p>All the content here</p>
<div class="thisisabox">
<p>Something here too</p>
</div>
</td>
<td class="rightsidespacer"></td>
</tr>
</tbody>
</table>
在任何普通的电子邮件客户端中,这都是小菜一碟。您在中间列上设置了一个宽度,就是这样。 Outlook 2007(可能还有其他版本)反而折叠了所有三列,因此中间列占据了正文宽度的 100%。基本上,在表格单元格上设置宽度是没有效果的。
好吧,所以我回到真的旧时在空单元格中添加图像以强制它们具有一定宽度的方法。丑陋而愚蠢,但至少它有点工作。
我现在面临的问题是,我神秘地找不到 任何人 甚至在网上提到的问题是,我放入 td 中的任何元素总是最终成为 100%单元格的宽度和内容的高度,不管我做什么。
例如,在上面的示例中,div 和类 thisisabox 总是最终只是一行文本的高度和表格单元格的 100%,即使我这样定义它:
<div width="200" height="200"
style="display: block;
width: 200px;
height: 200px;
background: red;">
我的一切都在尖叫,这应该产生一个 200 × 200 像素的红色框,但事实并非如此。它只是被完全忽略了。
据我所知,我的风格中没有任何东西应该对此产生任何影响。我对上面 HTML sn-p 中的位的全部样式声明是这样的:
table {
width: 100%;
margin: 0;
padding: 0;
}
table, tr, td {
border-collapse: collapse;
}
td {
padding: 35px 0;
border: 0;
}
(它在发送前被Premailer API 内联和HTML 属性化,所以这不是因为样式只在head 中声明。)
有没有办法让 Outlook 注意到表格单元格内元素的指定宽度和高度?
或者我是否遗漏了一些非常明显的东西,导致 Outlook 以这种令人愤怒的方式运行?
【问题讨论】:
标签: html css outlook html-email