通过锚标记使整个 <td> 可点击

Posted

技术标签:

【中文标题】通过锚标记使整个 <td> 可点击【英文标题】:Making whole <td> Clickable through anchor tag 【发布时间】:2013-07-23 19:52:59 【问题描述】:

在为 Outlook 创建 html 电子邮件时,我偶然发现了一个我无法解决的小问题。

下面是一个 html 表格的屏幕截图。我需要使整个区域可点击,而不仅仅是文本。当我将 &lt;a href="#"&gt; 放在 &lt;td&gt;&lt;table&gt; 周围时,它在浏览器中有效,但在 Outlook 中无效。

代码如下:

<table border="0" cellpadding="0" cellspacing="0" style="border-top-left-radius: 5px;border-top-right-radius: 5px;border-bottom-right-radius: 5px;border-bottom-left-radius: 5px;background-color: #2FBA45;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;">
    <tbody>
        <tr>
            <td align="center" valign="middle" style="font-family: Arial;font-size: 22px;padding: 15px;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;">
                <a href="#" title="Yes please, send me a quote." target="_self" style="font-weight: bold;letter-spacing: -0.5px;line-height: 100%;text-align: center;text-decoration: none;color: #FFFFFF;word-wrap: break-word !important; display:block; width:100%; height:100%">Yes please, send me a quote.</a>
            </td>
        </tr>
    </tbody>
</table>

【问题讨论】:

查看此链接以了解电子邮件客户端支持哪些 HTML 标准 campaignmonitor.com/css @AnaMaria 我知道,但如果可能,我要求替换此代码 【参考方案1】:

我知道这是一个老问题,但我一直在寻找这个问题的答案(Outlook 中可点击的整个按钮)并偶然发现了以下解决方案:

<table border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td align="center" valign="middle" >

<!-- start of Outlook compatible button generated by http://buttons.cm/ -->
<div><!--[if mso]>
  <v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="http://yoururlhere.com/" style="height:52px;v-text-anchor:middle;width:330px;" arcsize="10%" stroke="f" fillcolor="#2fba45">
    <w:anchorlock/>
    <center>
  <![endif]-->
      <a href="http://yoururlhere.com/"
style="background-color:#2fba45;border-radius:5px;color:#ffffff;display:inline-block;font-family:sans-serif;font-size:13px;font-weight:bold;line-height:52px;text-align:center;text-decoration:none;width:330px;-webkit-text-size-adjust:none;">Yes please, send me a quote.</a>
  <!--[if mso]>
    </center>
  </v:roundrect>
<![endif]--></div>
<!-- end of Outlook compatible button generated by http://buttons.cm/ -->

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

注意我没有测试上面的代码。

其他答案确实链接到campaignmonitor 网站,但不是this link which provided the solution。

campaignmonitor 上的那篇博文提到,他们基于 Stig M(推特上的@stigm)创建的解决方案创建了一个 specific website to generate outlook compatible clickable buttons - http://buttons.cm 。

我不为campaignmonitor工作。

希望对某人有所帮助。

【讨论】:

【参考方案2】:

试试这个

http://jsfiddle.net/KrRzP/

<table border="0" cellpadding="0" cellspacing="0"   style="border-top-left-radius: 5px;border-top-right-radius: 5px;border-bottom-right-radius: 5px;border-bottom-left-radius: 5px;background-color: #2FBA45;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt; cursor:pointer;">
    <tbody>                 
        <tr>
            <td align="center" valign="middle"  style="font-family: Arial;font-size: 22px;padding: 15px;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;">
                <a  href="http://www.example.org" title="Yes please, send me a quote."  target="_self" style="font-weight: bold;letter-spacing: -0.5px;line-height: 100%;text-align: center;text-decoration: none;color: #FFFFFF;word-wrap: break-word !important; display:block; width:100%; height:100%">Yes please, send me a quote.</a>
            </td>  
        </tr>
    </tbody>
</table>

【讨论】:

即使在浏览器中也无法正常工作,是否有我更改我的代码(如 span 等)以获得相同的输出?【参考方案3】:

您可以尝试使用onClick&lt;td onClick="go to anchor"&gt;。在内联样式中,您应该添加cursor: pointer,以便将光标更改为“悬停链接”指针。

【讨论】:

【参考方案4】:

尝试删除target="_self"。由于 Outlook 是一个电子邮件客户端,它可能无法识别它并可能导致问题。

附带说明,如果您在电子邮件中使用锚链接(链接同一页面上的其他地方),则并非所有电子邮件浏览器都完全支持。这是support chart

【讨论】:

以上是关于通过锚标记使整个 <td> 可点击的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 CSS 使 HTML 锚标记不可点击/不可链接?

在 jQuery DataTables 中使用锚标记对列进行排序

页面回到顶部的三种实现(锚标记,js)

PHP 自动将URL转换为可点击超链接(锚标记)的功能

Javascript,循环使用单个td标记中的3个类

跨度在锚标记内阻止 iPhone 上 Safari 的点击事件