在 HTML5 中将表格行包装在元素(超链接)中

发布于 2024-10-06 07:04:04 字数 391 浏览 3 评论 0原文

我试图将表格行包装在“a”元素(超链接)中,以使整行可单击。我正在使用 HTML5 文档类型,它应该允许这种事情,事实上我在链接中包装其他块级元素没有问题。事实上,将 a 元素包裹在整个表格周围似乎是可行的。

标记如下:

<table>
    <tbody>
      <a href="#">
          <tr>
              <td>25 Nov 2010</td>
              <td>Active</td>
          </tr>
      </a>
   </tbody>
</table> 

I'm trying to wrap a table row in an "a" element (hyperlink) in order to make the whole row clickable. I'm using the HTML5 doctype, which should allow for this sort of thing and in fact I've had no problem wrapping other block-level elements in links. In fact, wrapping an a element around a whole table seems to work.

Markup as follows:

<table>
    <tbody>
      <a href="#">
          <tr>
              <td>25 Nov 2010</td>
              <td>Active</td>
          </tr>
      </a>
   </tbody>
</table> 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哎呦我呸! 2024-10-13 07:04:04

来自 HTML5 规范

元素所在的上下文tr 可以用作:

  • 作为 thead 元素的子元素。
  • 作为 tbody 元素的子元素。
  • 作为 tfoot 元素的子元素。
  • 作为表元素的子元素,位于任何 title、colgroup 和 thead 元素之后,但前提是不存在作为表元素子元素的 tbody 元素。

这意味着您无法继承 a 元素中的 tr
在你的情况下,我会使用 Javascript onclick 代替。或者,您可以在每行 td 中放置相同的锚元素。

希望这有帮助。

From the HTML5 spec:

Contexts in which element tr can be used:

  • As a child of a thead element.
  • As a child of a tbody element.
  • As a child of a tfoot element.
  • As a child of a table element, after any caption, colgroup, and thead elements, but only if there are no tbody elements that are children of the table element.

That means you cannot inherit tr in a element.
In your case I would go with Javascript onclick instead. Alternatively, you can put the same anchor element in each of the rows tds.

Hope this helps.

一枫情书 2024-10-13 07:04:04

为什么不使用 display: table-* CSS?它得到广泛支持并且相当无缝:

HTML:

<div class="table">
    <div class="tbody">
      <a href="#" class="tr">
          <div class="td">25 Nov 2010</div>
          <div class="td">Active</div>
      </a>
   </div>
</div> 

CSS:

.table { display: table; }
.tbody { display: table-row-group; }
.tr { display: table-row; }
.td { display: table-cell; }

参见 codepen

Why not use display: table-* CSS? It's widely supported and is fairly seamless:

HTML:

<div class="table">
    <div class="tbody">
      <a href="#" class="tr">
          <div class="td">25 Nov 2010</div>
          <div class="td">Active</div>
      </a>
   </div>
</div> 

CSS:

.table { display: table; }
.tbody { display: table-row-group; }
.tr { display: table-row; }
.td { display: table-cell; }

See codepen

哭泣的笑容 2024-10-13 07:04:04

您可以将 tr 替换为 a 元素。只需将 a 设置为 display:table-row

You can replace the tr with an a element. Just set the a to display:table-row

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文