【问题标题】:Email HTML border over content, not cell?电子邮件 HTML 边框覆盖内容,而不是单元格?
【发布时间】:2019-06-03 09:09:33
【问题描述】:
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tr>
    <td style="border:2px solid #ffffff; padding: 8px 10px;  border-radius: 0px; -moz-border-radius: 0px; -webkit-border-radius: 0px;  text-decoration:none;">
    <h3 style="color:#FFFFFF;font-family:Arial, Helvetica, sans-serif;font-size:16px;font-style:normal;font-weight:bold;line-height:150%;letter-spacing:2px;text-decoration:none;text-align:center;">
      <a alias="" conversion="false" data-linkto="https://" href="google.com" style="color:#ffffff;text-decoration:none; " title="Book Appointment">
        <span>BOOK AN APPOINTMENT<br> 
          TO VISIT US TOMORROW</span></a>
    </h3>
    </td>
  </tr>
</table>

无论我在哪里添加边框样式,它总是包裹整个单元格,而不是单元格 content 本身。

代码如下:

如果我将它添加到 span 元素上,它会完全打破边框,如下所示:

这就是我需要的样子:

我在这里做错了什么?

【问题讨论】:

  • 无法在 jsfiddle 或 SO sn-p 上运行代码,请检查

标签: html css email html-table html-email


【解决方案1】:

这相当简单,并且可以在所有电子邮件客户端中始终如一地工作。

单行文字

<table align="center" role="presentation" cellspacing="0" cellpadding="0" border="0" width="" style="margin: auto;">
  <tr>
    <td style="text-align: center;">
      <h3 style="margin: 0;"><a href="#" style="border: 2px solid #ffffff; font-family: sans-serif; font-weight: bold; font-size: 16px; line-height: 22px; text-decoration: none; padding: 20px 30px; color: #ff0000; display: block; letter-spacing: 2px;">Book An Appointment<br />To Visit Us Tomorrow</a></h3>
    </td>
  </tr>
</table>

两行文字

<table align="center" role="presentation" cellspacing="0" cellpadding="0" border="0" width="260" style="margin: 0; border: 2px solid #ff0000;">
  <tr>
    <td style="background: #222222; border: 8px solid #222222; text-align: center;">
      <div style="padding: 10px 15px;">
        <a href="#" style="background: #222222; border: 1px solid #222222; font-family: sans-serif; font-weight: bold; font-size: 16px; line-height: 22px; text-decoration: none; color: #ffffff; display: block; letter-spacing: 2px; mso-line-height-alt: 22px;">Book An Appointment To Visit Us Tomorrow</a>
      </div>
    </td>
  </tr>
</table>

除非您需要屏幕阅读器的 &lt;h3&gt;,否则我建议将其删除。

祝你好运。

【讨论】:

  • 感谢您的帮助!它似乎确实有效,但似乎只有 Outlook 为它们分隔了边界。我会看看我自己能不能解决这个问题。
  • @Rain 我很抱歉。我忘记了 Outlook 对带有两行文本的 href 执行此操作。所以我修改了我的答案并在 Litmus 中进行了测试。这两行文本让 Outlook 看起来更接近您想要的样子。
【解决方案2】:

您的问题有很多解决方案: 一种是在单元格内容周围添加一个 div,如下所示:

table {background: black}
.contour {
    border: 2px solid #ccc;
    width: 50%;
    height: 20%;
    margin: 10px auto
}
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr>
        <td style="border:2px solid #ffffff; padding: 8px 10px;  border-radius: 0px; -moz-border-radius: 0px; -webkit-border-radius: 0px;  text-decoration:none;">
        <div class="contour">
          <h3 style="color:#FFFFFF;font-family:Arial, Helvetica, sans-serif;font-size:16px;font-style:normal;font-weight:bold;line-height:150%;letter-spacing:2px;text-decoration:none;text-align:center;">
            <a alias="" conversion="false" data-linkto="https://" href="google.com" style="color:#ffffff;text-decoration:none; " title="Book Appointment">
              <span>BOOK AN APPOINTMENT<br> 
                TO VISIT US TOMORROW</span></a>
          </h3>
        </div>
        </td>
      </tr>
    </table>

另一种方法是使用a 元素作为文本周围的块

table {background:black}
a {
  display:block; 
  border:2px solid #ccc;
  width: 50%;
  margin: 0 auto;
  padding:10px;
}
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tr>
    <td style="border:2px solid #ffffff; padding: 8px 10px;  border-radius: 0px; -moz-border-radius: 0px; -webkit-border-radius: 0px;  text-decoration:none;">
    <div class="contour">
      <h3 style="color:#FFFFFF;font-family:Arial, Helvetica, sans-serif;font-size:16px;font-style:normal;font-weight:bold;line-height:150%;letter-spacing:2px;text-decoration:none;text-align:center;">
        <a alias="" conversion="false" data-linkto="https://" href="google.com" style="color:#ffffff;text-decoration:none; " title="Book Appointment">
          <span>BOOK AN APPOINTMENT<br> 
            TO VISIT US TOMORROW</span></a>
      </h3>
    </div>
    </td>
  </tr>
</table>

【讨论】:

  • div 不能在所有电子邮件客户端上正常工作(outlook 会忽略来自 div 的 display blockinline-block)。 a 元素可能会正常工作。
【解决方案3】:

把边框放在h3上,做成inline-block

td {
  background: grey;
  text-align: center;
}

h3 {
  border: 1px solid white;
  display: inline-block;
}
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tr>
    <td style="padding: 8px 10px;  border-radius: 0px; -moz-border-radius: 0px; -webkit-border-radius: 0px;  text-decoration:none;">
      <h3 style="color:#FFFFFF;font-family:Arial, Helvetica, sans-serif;font-size:16px;font-style:normal;font-weight:bold;line-height:150%;letter-spacing:2px;text-decoration:none;text-align:center;">
        <a alias="" conversion="false" data-linkto="https://" href="google.com" style="color:#ffffff;text-decoration:none; " title="Book Appointment">
          <span>BOOK AN APPOINTMENT<br> 
          TO VISIT US TOMORROW</span></a>
      </h3>
    </td>
  </tr>
</table>

【讨论】:

    【解决方案4】:

    不要为表格设置样式,为内容设置样式,并简化您的标记:

        <td>
            <a alias="" conversion="false" data-linkto="https://" href="google.com"
     style="display:inline-block;border:2px solid #ffffff; padding: 8px 10px;color:#FFFFFF;font-family:Arial, Helvetica, sans-serif;font-size:16px;font-style:normal;font-weight:bold;line-height:150%;letter-spacing:2px;text-decoration:none;text-align:center;" title="Book Appointment">
        BOOK AN APPOINTMENT<br> 
        TO VISIT US TOMORROW</a>
        </td>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      相关资源
      最近更新 更多