HTML Table 表示 non-data table 单元格
HTML Table denoting non-data table cell
我想知道是否有办法将 table 中的某些 elements/table 单元格表示为 non-data?例如,如果我在每一行的末尾都有一个按钮:
<table>
<tr>
<th>header 1</th>
<th>header 2</th>
</tr>
<tr>
<td>data A1</td>
<td>data A2</td>
<button onclick="doSomething()">Do Something</button>
</tr>
<tr>
<td>data B1</td>
<td>data B2</td>
<button onclick="doSomething()">Do Something</button>
</tr>
</table>
在每个 <tr>
中放置按钮的正确方法是什么?我应该把它放在 <td>
中(没有 header 列)吗?使用屏幕阅读器的人会感到困惑吗?就可访问性而言,这里的最佳做法是什么?
简答
没有特殊的方法可以指示特定的单元格、列或行不包含实际数据。
也没有关于在何处放置 table 行的操作按钮的具体建议。
但是,作为盲人用户,我会建议将操作按钮放在他们的专用栏中。
请注意,在这种情况下,添加的列必须具有其 non-empty header.
更长的答案
逐个单元格、逐列而不是逐行线性地浏览冗长的 tables 的情况并不少见。
使用 Jaws 或 NVDA,这可以通过 Ctrl+Alt+箭头键来完成。
在这种情况下,将操作按钮放在单独的列中可以防止屏幕 reader 不必要地一遍又一遍地重复相同的按钮。
在您的示例中,如果我们在第二列逐行导航,则按钮与数据位于同一单元格中会给出“数据 A2,执行某些按钮”,然后是“数据 B2,执行某些按钮”。
将按钮放在单独的列中可以避免这种情况。
但是,如果您将操作按钮放在它们的专用列中,则此特殊列必须有一个 non-empty header。
这一点很重要,因为在经历 table 时,通常会在更改行或列时宣布 headers,并且 headers 也可以根据需要再次宣布。能够准确地知道我们在 table 中的位置非常重要,尤其是当它有许多行 and/or 列时。
在没有 header.
的牢房里总是很奇怪
所以是的,你必须在相应的<th>
中放一些东西。 “Actions”非常适合非常通用的用例。
如果您不希望文本在屏幕上可见,同时将其保留在屏幕 reader 秒,您可以在 CSS.
中使用视觉隐藏文本的概念
您可能想使用 colspan 使最后一列 header 花费两列而不是放置一个特殊的 <th>Actions</th>
。
不要这样做。跨列和跨行的可访问性通常比空 header.
更差
我想知道是否有办法将 table 中的某些 elements/table 单元格表示为 non-data?例如,如果我在每一行的末尾都有一个按钮:
<table>
<tr>
<th>header 1</th>
<th>header 2</th>
</tr>
<tr>
<td>data A1</td>
<td>data A2</td>
<button onclick="doSomething()">Do Something</button>
</tr>
<tr>
<td>data B1</td>
<td>data B2</td>
<button onclick="doSomething()">Do Something</button>
</tr>
</table>
在每个 <tr>
中放置按钮的正确方法是什么?我应该把它放在 <td>
中(没有 header 列)吗?使用屏幕阅读器的人会感到困惑吗?就可访问性而言,这里的最佳做法是什么?
简答
没有特殊的方法可以指示特定的单元格、列或行不包含实际数据。 也没有关于在何处放置 table 行的操作按钮的具体建议。
但是,作为盲人用户,我会建议将操作按钮放在他们的专用栏中。 请注意,在这种情况下,添加的列必须具有其 non-empty header.
更长的答案
逐个单元格、逐列而不是逐行线性地浏览冗长的 tables 的情况并不少见。 使用 Jaws 或 NVDA,这可以通过 Ctrl+Alt+箭头键来完成。
在这种情况下,将操作按钮放在单独的列中可以防止屏幕 reader 不必要地一遍又一遍地重复相同的按钮。 在您的示例中,如果我们在第二列逐行导航,则按钮与数据位于同一单元格中会给出“数据 A2,执行某些按钮”,然后是“数据 B2,执行某些按钮”。 将按钮放在单独的列中可以避免这种情况。
但是,如果您将操作按钮放在它们的专用列中,则此特殊列必须有一个 non-empty header。 这一点很重要,因为在经历 table 时,通常会在更改行或列时宣布 headers,并且 headers 也可以根据需要再次宣布。能够准确地知道我们在 table 中的位置非常重要,尤其是当它有许多行 and/or 列时。 在没有 header.
的牢房里总是很奇怪所以是的,你必须在相应的<th>
中放一些东西。 “Actions”非常适合非常通用的用例。
如果您不希望文本在屏幕上可见,同时将其保留在屏幕 reader 秒,您可以在 CSS.
您可能想使用 colspan 使最后一列 header 花费两列而不是放置一个特殊的 <th>Actions</th>
。
不要这样做。跨列和跨行的可访问性通常比空 header.