30

如果是这样的结构:

<table cellspacing="0" cellpadding="0">
   <tr>
      <td>I don't need anything here, should I always put a &nbsp; here?</td>
      <td>item </td>
   </tr>
   <tr>
      <td>model</td>
      <td>one</td>
   </tr>
   <tr>
      <td>model</td>
      <td>two</td>
   </tr>
   <tr>
      <td>model</td>
      <td>three</td>
   </tr>
</table>

屏幕阅读器将如何阅读空白td?它在语义上正确吗?

4

4 回答 4

16

语义上正确的恕我直言,将空单元格保持为空。&nbsp;但是,出于务实的原因,我也用 s 填充空单元格。

至于屏幕阅读器,我必须做出一个有根据的猜测:空节点可能不会被读取,因为 HTML 主要由空白文本节点组成,读者会忽略这些节点,我假设它在阅读器应用程序&nbsp;中被折叠成一个简单的空间(因为不间断是视觉媒体的属性)。

对于视觉呈现,可以依赖 CSS 表格属性empty-cells

table {
    empty-cells: show;
}
于 2010-03-24T09:10:09.143 回答
6

从语义上讲,HTML 表实际上只是一个数据数组(矩阵),没有理由不能将不间断空格字符视为数据。它是否真的有意义取决于表格的目的、结构和内容。在大多数情况下,有更好的解决方案。请参阅HTML 表格中的空单元格中的一些建议。

在技​​术方面,不间断空间具有宽度和高度,具体取决于字体,这对单元格的尺寸提出了最低要求。这可能很重要,但主要是在行或列仅用作分隔符的情况下,例如创建水平或垂直线。

与使用正常空间或让单元格完全为空相反,使用不间断空间的另一个影响是,它可能会影响单元格周围的边框外观以及单元格内的背景颜色和背景图像。

屏幕阅读器在指示空单元格的方式上有所不同(如果有的话),这也可能取决于阅读模式。在任何情况下,用户都没有得到真正发生了什么的指示,即空单元格(如果空虚完全传达给用户)意味着什么。在视觉浏览中,含义可能(或可能不)相当明显。

于 2012-07-25T05:06:11.663 回答
2

多亏了 Dreamweaver 之类的编辑器,这种做法在某种程度上成为了一种标准,因此即使它不是一个完美的解决方案 - 至少您不会孤军奋战。此外,它与旧版浏览器的兼容性比 CSS 的empty-cells.

于 2010-03-24T09:37:22.457 回答
0

没有什么确切地说您不应该使用空白 TD,当您尝试验证时它会通过。

虽然,更优雅的方法是使用 colspan。

IE

<tr>
   <td colspan="2">item </td>
</tr>

但这会将您的内容与左侧对齐,并且您必须手动(通过 css)应用样式,以便将内容对齐到您想要的位置。

将它与 colspan 一起使用的好处是,屏幕阅读器只会阅读那里的内容,而不是空白区域

于 2010-03-24T09:26:38.953 回答