尝试使用 Zurb Foundation 使电子邮件在响应列点折叠

Trying to get email to collapse at responsive column points using Zurb Foundation

我正在尝试使这封电子邮件在移动设备和桌面设备上都具有响应性。当我在 Gmail 移动应用程序上对此进行测试时,电子邮件不会折叠。这些列包含 6 x 6 网格,而不是每个列都有 12 个网格。谁能帮我弄清楚问题出在哪里?我已经使用 Zurb inliner 内联了我的 CSS。但是网格没有折叠的问题仍然存在。

还有谁能告诉我他们会推荐的电子邮件测试器,用于在开发过程中测试响应式电子邮件。

这是 Codepen

上的电子邮件模板的 link

http://codepen.io/anon/pen/JEBVWK

下面是其中一列的示例,在小的时候应该是 12 列宽,在大的时候应该是 6 x 6 列,但即使在 Gmail 应用程序中也应该并排保持 2 x 6 列

<table class="row" style="border-spacing: 0; border-collapse: collapse; vertical-align: top; text-align: left; width: 100%; position: relative; display: table; padding: 0;">
    <tbody>
        <tr align="left" style="vertical-align: top; text-align: left; padding: 0;">
            <th align="left" class="small-12 large-6 columns" style="width: 274px; color: #0a0a0a; font-family: Helvetica, Arial, sans-serif; font-weight: normal; text-align: left; line-height: 1.3; font-size: 16px; margin: 0 auto; padding: 0 8px 16px 16px;">
                <ul class="disc">
                    <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut sodales sapien aliquam arcu egestas dignissim. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut sodales</li>
                </ul>
                <table style="border-spacing: 0; border-collapse: collapse; vertical-align: top; text-align: left; width: 100%; padding: 0;">
                    <tr align="left" style="vertical-align: top; text-align: left; padding: 0;">
                        <td></td>
                    </tr>
                </table>
            </th>
            <th align="left" class="small-12 large-6 columns last" style="width: 274px; color: #0a0a0a; font-family: Helvetica, Arial, sans-serif; font-weight: normal; text-align: left; line-height: 1.3; font-size: 16px; margin: 0 auto; padding: 0 16px 16px 8px;">
                <ul class="disc">
                    <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut sodales sapien aliquam arcu egestas dignissim.</li>
                </ul>
                <table style="border-spacing: 0; border-collapse: collapse; vertical-align: top; text-align: left; width: 100%; padding: 0;">
                    <tr align="left" style="vertical-align: top; text-align: left; padding: 0;">
                        <td></td>
                    </tr>
                </table>
            </th>
        </tr>
    </tbody>
</table>

我发现 Zurb 模板也很烦人。您使用的模板是 pre-hybrid 时期构建的。该代码严重依赖于仅适用于 iOS 和 Android 4.4 及以下版本的媒体查询。尝试编码的混合方法。如果您还没有听说过混合,它是唯一允许所有设备显示电子邮件响应版本(甚至是 Gmail、Gmail 应用程序和三星设备)的方法。

我写了一个循序渐进的方法(最初在 SO 文档中,现在如下所示),您可以立即使用它来构建自己的模板。如果您的 header 中有内联网站,您可以在线使用内联网站来内联您 CSS。如果您需要我以任何方式帮助创建完整模板,请告诉我。


使用的编码方式:Hybrid/Spongy

div 不能用于电子邮件一直是个神话。有些电子邮件客户端(与 outlook 不同)可以正确呈现 div。下面的示例将说明如何对电子邮件进行编码,使其适用于 Gmail 应用程序(更新尚未推出)、三星设备和其他不读取媒体查询的电子邮件客户端。

引入 Outlook 条件语句

Outlook 条件语句在呈现电子邮件或显示特定内容(如 outlook 的回退)时非常有用。

<!--[if (gte mso 9)|(IE)]>
<![endif]-->

以上代码为if greater than microsoft outlook 9 or IE

Outlook 2000 - Version 9
Outlook 2002 - Version 10
Outlook 2003 - Version 11
Outlook 2007 - Version 12
Outlook 2010 - Version 14
Outlook 2013 - Version 15

列出了条件语句的版本。

启动混合电子邮件模板

每个步骤都以一种任何具有基本 HTML 知识的人都应该容易理解的方式进行解释。

首先,我们从一个包装器 table 开始,它将一直跨越整个屏幕,并带有一个 class 的容器。

<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tbody>
    <tr>
      <td>[CONTENT GOES HERE]</td>
    </tr>
  </tbody>
</table>

之后,我们为不读取最大宽度但读取 header 中的 CSS 的电子邮件客户端添加媒体查询。媒体查询将针对所有屏幕并以 700 像素宽度显示容器。

@media only screen and (max-width : 700px) {
.container{width:700px;}
}

接下来我们添加一个 outlook 条件语句,使 table(带有 class 容器)的宽度为 700 像素。

<!--[if (gte mso 9)|(IE)]>
    <table width="700" align="center" cellpadding="0" cellspacing="0" border="0">
        <tr>
            <td align="left" valign="top" width="700">
    <![endif]-->

        <table class="container" width="100%" border="0" cellspacing="0" cellpadding="0" style="width: 100%; max-width: 700px;">
              <tbody>
                <tr>
                  <td valign="top" bgcolor="#FFFFFF" style="padding:0px;text-align: center; vertical-align: top; font-size: 0px;">[CONTENT GOES HERE]</td>
                </tr>
              </tbody>
        </table>

    <!--[if (gte mso 9)|(IE)]>
            </td>
        </tr>
    </table>
<![endif]-->

上面的代码现在应该在 outlook 中以 700 像素宽显示您的模板。

现在是专栏。下面的代码将在模板上创建两个相等的列,宽度均为 350 像素。

<!--[if (gte mso 9)|(IE)]>
<table width="700" align="center" cellpadding="0" cellspacing="0" border="0">
    <tr>
        <td align="left" valign="top" width="350">
<![endif]-->
<div style="width: 350px; display: inline-block; vertical-align: top;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tbody>
    <tr>
      <td>[COLUMN CONTENT HERE]</td>
    </tr>
  </tbody>
</table>
</div>

<!--[if (gte mso 9)|(IE)]>
</td><td align="left" valign="top" width="300">
<![endif]-->

<div style="width: 350px; display: inline-block; vertical-align: top;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tbody>
    <tr>
      <td>[COLUMN CONTENT HERE]</td>
    </tr>
  </tbody>
</table>
</div>

 <!--[if (gte mso 9)|(IE)]>
        </td>
    </tr>
</table>
<![endif]-->

在此之后,限制只是你的想象力或设计师。完成设计后,重要的是要参与线框阶段,这样一旦设计进入编码阶段就不会出现意外。

注:

  • Retina 图像将需要在元素级别而非其样式上设置图像
  • 您仍然可以选择 in-line CSS 或者您可以选择 CSS 仅在头部 如果 所有客户都支持 CSS在头上。