【问题标题】:Cells not aligning in embedded table嵌入表格中的单元格未对齐
【发布时间】:2025-12-06 20:00:02
【问题描述】:

我正在尝试为电子邮件创建一个包含三个表格的嵌入式表格。我使用表格的原因是,当电子邮件在较小的屏幕上呈现时,我希望表格堆叠在一起。并非所有电子邮件客户端都能很好地阅读 CSS,因此我正在寻找内联 HTML 编码,而不是 CSS 解决方案。

内容表的总宽度为 600 像素。其中,表 1 为 299px 宽,表 2 为 2px 宽,表 3 为 299 px 宽。

我遇到的第一个挑战是表 2 上的行高在表 1 和表 3 中不是 100%。我通过将内容表和表 2 中的行高更改为 100% 来解决这个问题。这似乎解决了表 2 的行高,但随后表 3 被向下推。

这里是 jsfiddle:https://jsfiddle.net/robertschlotzhauer/snk6pjb9/

<table border="0" cellpadding="0" cellspacing="0" width="600" height="100%">
    <tbody>
        <tr>
            <td>
                <table align="left" border="0" cellpadding="0" cellspacing="0" width="299">
                    <tbody>
                        <tr>
                            <td style="padding:10px 15px 10px 15px;line-height:18px">
                                <div align="center">
                                    <font style="font-family:Arial;font-size:16px;">
                                        <b>
                                            Text
                                        </b>
                                     </font>


                                 </td>
                             </tr>
                         </tbody>

                     </table>
                     <table bgcolor="#8C231C" border="0" cellpadding="0" cellspacing="0" height="100%">
                         <tbody>
                             <tr>
                                 <td style="line-height:2px" bgcolor="#8C231C" width="2px">
                                     <font style="font-size:2px">

                                         &nbsp;                  


                                      </font>

                                  </td>
                              </tr>
                          </tbody>
                      </table>
                  <table border="0" cellpadding="0" cellspacing="0" width="299" valign="top" align="right">
                      <tbody>
                          <tr>
                              <td style="padding:10px 20px 0px 20px;line-height:18px">
                                  <div align="center">
                                      <font style="font-size:16px;" face="arial">
                                          <b>
                                              Text text text
                                          </b>
                                       </font>
                                       <br>
                                       <br>
                                       <font style="font-size:12px;" face="arial">
                                           Text text text
                                       </font>
                                   </div>
                               </td>
                           </tr>
                       </tbody>
                   </table>
               </td>
           </tr>
       </tbody>
   </table>

任何有关清理此问题的建议都会有所帮助。

【问题讨论】:

  • 你为什么使用表格而不是&lt;div&gt;'s?这个编码标准在 90 年代后期就已经过时了。
  • 使用表格,以便在电子邮件客户端的较小屏幕上查看表格时,它们彼此对齐。在桌面上,它们应该成一条直线对齐,但在客户端上,表 1 应该在顶部,表 3 应该在底部。
  • 请编辑您的问题以明确这一点,因为它没有说明这一点。此外,您的 jsfiddle 包含与您在问题中发布的内容完全不同的 html。
  • 已对问题进行了编辑,以使情况更加清晰。
  • 您到底想要实现什么/您遇到的问题是什么?你是否试图让它响应堆叠在彼此之上?你想用那个 2px 的表做点什么吗?只是想在我考虑清理之前澄清一下

标签: html html-table html-email inline


【解决方案1】:

你需要做 CSS。没有原始的 html 方法可以真正做到这一点。您可以通过内联进行大部分操作,但需要一些备份媒体查询。见下面代码sn-p:

.contenttable {width:600px;}
.big {width:299px;}

@media only screen and (max-width: 600px) {
	table {width:100% !important; max-width:none !important;}
	td {border-collapse:collapse !important; padding-left:0 !important; padding-right:0 !important;}
}
<body>
<!--[if (gte mso 9)|(IE)]>
  <table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
    <tr>
      <td width="299" align="left">
<![endif]-->
<table class="contenttable" border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width:600px;">
  <tbody>
        <tr>
      <td style="font-size:1px; mso-line-height-rule:exactly; line-height:5px" bgcolor="#8C231C" height="5">&nbsp;</td>
    </tr>
    <tr>
    <td align="center">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tbody>
  
    <tr height="100%">
      <td>
        
        <table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width:299px;" class="big">
          <tbody>
            <tr>
              <td align="center" style="font-family:Arial;font-size:16px; padding-left:10px; padding-bottom:15px; padding-right:10px; padding-top:15px; line-height:18px"><b>In This Issue</b></td>
              </tr>
              <tr>
              <td align="center">
              <table align="center" width="299" cellpadding="0" cellspacing="0" border="0" style="width:299px !important;">
              <tr>
              <td align="left" style="font-family:Arial;font-size:12px">
              <ol>
                  <li>
                    <font style="font-family:Arial;font-size:12px;">
                      Text text text
                    </font>
                  </li>
                  <li>
                    <font style="font-family:Arial;font-size:12px;">
                      Text text text
                    </font>
                  </li>
                  <li>
                    <font style="font-family:Arial;font-size:12px;">
                      Text text text
                    </font>
                  </li>
                  <li>
                    <font style="font-family:Arial;font-size:12px;">
                      Text text text
                    </font>
                  </li>
                </ol>
              </td>
              </tr>
              </table>
              </td>
            </tr>
          </tbody>
        </table>
      
<!--[if (gte mso 9)|(IE)]>
      </td><td align="right" width="299">
<![endif]-->      
         <table align="right" border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width:299px;" class="big">
          <tbody>
            <tr>
              <td align="center" style="padding-left:10px; padding-bottom:10px; padding-top:20px; font-size:16px; font-family:Arial; line-height:18px"><b>Text text text</b></td>
              </tr>
              <tr>
              <td align="center" style="padding-left:10px; padding-bottom:20px; font-size:12px; font-family:Arial; line-height:15px">Text text text</td>
              </tr>
              <tr>
              <td align="center" style="padding-left:10px; padding-bottom:10px;"><img style="width:150px;height:50px;" src="http://img.en25.com/EloquaImages/clients/LaurelSpringsSchool/{b3492627-ee05-4126-9344-9e00be069cd3}_P7-1314_RegisterNowRed__Button.jpg"></div>
              </td>
          </tr>
        </tbody>
      </table>
      

      </td>
    </tr>
  </tbody>
</table>
</td>
</tr>
<tr>
<td align="center">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tbody>
    <tr>
      <td style="font-size:1px; mso-line-height-rule:exactly; line-height:5px" bgcolor="#8C231C" height="5">&nbsp;</td>
    </tr>
  </tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!--[if (gte mso 9)|(IE)]>
      </td>
    </tr>
</table>
<![endif]-->
</body>

【讨论】:

  • 谢谢戈罗宁顿! 2x 分隔表似乎没有呈现:(
最近更新 更多