嵌套有 <table> 标记的 <a> 标记在 XHTML 中无效

<a> tag nested with a <table> tag is not valid in XHTML

提问人:Allen 提问时间:7/14/2015 更新时间:7/17/2015 访问量:96

问:

我正在编写电子邮件模板。我想让它在规则下完全合法。我的代码中有一个带有标签的按钮,当然,它链接到一个 URL。出于这个原因,我在 .W3C 验证器工具显示我无法嵌套这些元素。我添加了代码以使其更易于理解。htmlXHTML<table><a><table>

你有什么建议来避免这个问题吗?

感谢您的帮助。

<a style="text-decoration:none; color:#660eaa; font-size:13px; line-height:125%;" href="http://google.com/" >
    <table id="templateButton" style="font-size:15px; border-radius:6px; -moz-border-radius:6px; -webkit-border-radius:6px;" bgcolor="#ffd700" align="center" cellspacing="0" cellpadding="0" border="0">
        <tr>
            <td align="center" style="padding:16px 10px"><strong>Go to Google!</strong></td>
        </tr>
    </table>
</a>
HTML 电子邮件 xhtml w3c-validation

评论

2赞 BoltClock 7/14/2015
“你有什么建议来避免这个问题吗?”“不要尝试按照XHTML规则编写HTML电子邮件”算不算?
1赞 Dan Lowe 7/14/2015
只需使用按钮元素并设置其样式即可。这就是他们的目的。
0赞 Allen 7/14/2015
感谢您的快速回复。我总是喜欢尽可能清晰和正式地编程。XHTML规则对我来说并不麻烦。为什么不直接见见他们呢?
0赞 Quentin 7/17/2015
@Allen — 规则规定表用于表格数据,并且不允许在锚点内使用表。所以你不能跟着他们做你想做的事情。如果你想写出正确的XHTML,那么你应该有一个锚点,并用CSS来设置它的样式。然后你会遇到电子邮件客户端在HTML/CSS上很糟糕的问题。
0赞 Allen 7/17/2015
我理解。谢谢;)

答:

0赞 ja408 7/14/2015 #1

您不能使用这样的标签。a

正确的方法是:

<table id="templateButton" style="font-size:15px; border-radius:6px; -moz-border-radius:6px; -webkit-border-radius:6px;" bgcolor="#ffd700" align="center" cellspacing="0" cellpadding="0" border="0">
   <tr>
      <td align="center" style="padding:16px 10px">
         <a style="text-decoration:none; color:#660eaa; font-size:13px; line-height:125%;" href="http://google.com/" ><strong>Go to Google!</strong></a>
       </td>
   </tr>
</table>

您可以将代码样式设置为按钮,而不是容器 ( 或atdtable)

此外,请确保您的 HTML 电子邮件在您要支持的电子邮件客户端中看起来相同或相似。例如,您设置的边框半径在许多电子邮件客户端中不起作用。

我鼓励您查看此网站以获取有关 HTML 电子邮件的更多信息: https://www.campaignmonitor.com/dev-resources/will-it-work/

编辑: 您可以通过添加背景颜色来设置 和 的样式。tabletd

评论

0赞 Allen 7/14/2015
非常感谢。我会检查链接。还有另一种方法可以在不使用边框半径的情况下达到相同的效果?
0赞 ja408 7/17/2015
使边框半径一致的唯一方法是创建按钮的图像版本。