【问题标题】:Outlook breaking Responsive Email LayoutOutlook 打破响应式电子邮件布局
【发布时间】:2013-10-03 20:39:50
【问题描述】:

我正在构建一个基于表格的响应式电子邮件,其中包含一系列嵌套表格。我的总体布局如下所示:

用数字表示它们在 html 中的流动。

现在,在使用 Microsoft Word 引擎渲染的 Outlook '07 和 '10 中,当框 2 达到一定高度时,它似乎正在插入分页/换行符,正如建议的 hereherehere

我说出现是因为我不知道在这些情况下查看代码的方法,因为它实际上是由 Outlook/Word 解释的。问题是,当输入此中断时,它会强制框/表 3 向下与中断平齐,如下所示:

现在,我看到的一些消息来源表明,它在它自己完成之前就与 <tr style="page-break-before: always"> 决裂,尽管我认为这对于没有两个的人来说会更好列堆栈。

正如上面 MailChimp 文章中所建议的,我还尝试实现条件代码来定位 <br/> 元素:

<!--[if gte mso 9]>
    <style type="text/css">
br { display: none;}    </style>
<![endif]--> 

但我没有看到任何明显的差异。我有这个布局是因为它响应迅速,并且可以折叠成一个单独的列供移动电子邮件客户端使用,如下所示:

所有这些元素也嵌套在一个更大的表格中,但我想知道我需要做的是将整个文档分成堆叠表格以避免太长,并制作一个重复的表格/框 3 以便表/框 3 将显示在两列布局中,按顺序排在第二位,保存在带有框/表 1 的表中,然后对于单列移动显示,副本将设置为显示在当前表下方/box 2,但这会打乱我的布局并且需要对两个位置进行相同的更新。

当前使用align: 属性设置表。

那么,有没有一种方法可以让 Outlook 不破坏表格,或者在不改变文档架构的情况下使其看起来相同?

【问题讨论】:

    标签: html css email outlook responsive-design


    【解决方案1】:

    我遇到了类似的问题,我可以使用以下代码对其进行排序。这里的想法是使用具有百分比宽度的表 td(左列将有 75%,右列将是 25%)并使用媒体查询覆盖小屏幕设备中的宽度。我将在下面发布代码:

    HTML

    <tr>
    <td align="left" valign="top" width="100%" style="padding:0 0 0 0px;">
        <table width="100%" border="0" cellpadding="0" cellspacing="0" align="center">
            <tbody>
                <tr>
                    <td width="75%" class="responsive-helper">
                        <table width="100%" cellpadding="0" cellspacing="0" border="0" align="right" >
                            <tr>
                                <td class="block" align="left" valign="top"  style="padding:25px 0 0;">
                                    <img src="images/image1.jpg" style="width:100%;" alt=" " border="0"/>
                                </td>
                            </tr>
                        </table>
                    </td>
                    <td width="25%" class="responsive-helper">
                        <table width="100%" cellpadding="0" cellspacing="0" border="0" align="right" >
                            <tr>
                                <td class="block" align="left" valign="top"  style="padding:25px 0 0;">
                                    <img src="images/image2.jpg" style="width:100%;" alt=" " border="0"/>
                                </td>
                            </tr>
                        </table>
                    </td>
                </tr>
            </tbody>
        </table>
    </td>
    

    CSS:

    <style type="text/css">
    @media only screen and (max-width:560px) {
        td[class="responsive-helper"] {
            width: 100%
        }
    }
    

    这适用于所有版本的 Outlook,并在响应式设备中叠加。

    【讨论】:

    • 很奇怪的答案。在 CSS 中,您编写 td[class= "device-cols"]{},但您的 html 没有 device-cols 类。但即使你的 html 有这样的类,我相信你的解决方案也行不通。
    【解决方案2】:

    您似乎非常了解 Outlook 分页问题。我会尝试围绕它进行设计,但这需要一些试验。使用较小的部分可能会更好。

    另一种选择是使用媒体查询,但它们不是 100% 支持的,这可能是您首先要保持流畅的动机。您可以尝试使用 Outlook 条件标签的媒体查询来强制仅在 Outlook 中定位。我知道会弄乱,但这对你来说是 html 电子邮件,并且可能是保持 Outlook 分页友好的流畅优先布局的唯一解决方案。

    【讨论】:

    • 虽然这不是我的偏好,但我决定这样做,最终在右侧列中复制两组不同的内容并将它们分别推送到顶部和底部堆叠的表格中,允许对于整体较短的桌子高度,尽管现在我不得不纠结于显示问题。谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 2016-04-18
    相关资源
    最近更新 更多