2010-03-24 86 views
21

如果是这样的结构:把 放在空的​​里面好吗?

<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?它在语义上是正确的吗?

回答

12

语义正确恕我直言,是保持一个空单元格真的空。但是,由于实际的原因,我也会用&nbsp;填充空单元格。

至于屏幕阅读器,我必须做出一个有根据的猜测:空的节点可能不会被读取,因为HTML主要由空白文本节点组成,读者忽略,并且我认为&nbsp;已折叠为读者应用(因为不破是视觉媒体的财产)简单的空间。

对于渲染视觉上,人们可以依靠CSS表格属性empty-cells

table { 
    empty-cells: show; 
} 
+2

我认为这个属性在IE不支持 – 2010-03-24 09:14:18

+3

这是真的,原因是,为什么我仍然在使用' 's,不幸的。 – Boldewyn 2010-03-24 09:29:38

+2

根据[MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/empty-cells),'empty-cells'属性在IE 8中支持。 – 2015-02-03 23:35:35

0

没有什么确切说你不应该使用使用空白TD,并把它传递当您尝试验证。

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

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

但这将调整你的内容到左边,你就会有这样的内容对准您想要手动(通过CSS)应用样式。

如何使用它colspans的好处是,屏幕阅读器将读取只有那里的东西,而不是空的空间

+4

'colspan'不是更优雅或语义的必要条件。 “colspan”有效地表示,表格单元格的值是通常属于两个不同单元格的值的有效组合。在上面的例子中:如果第一行是一个标题,那么'colspan'会给出一个完全错误的结果(即单元格内容被标记为* both *列的标签)。 – Boldewyn 2010-03-24 09:32:58

2

感谢像Dreamweaver编辑这种做法有些标准就成了,所以即使是不是一个完美的解决方案 - 至少你不会一个人做这件事。另外,它比旧版浏览器更能兼容CSS的empty-cells

4

语义上,一个HTML表格实际上只是数据的阵列(矩阵),而且也没有理由无间断空格字符不能被视为数据。是否真的有意义取决于表的目的,结构和内容。在大多数情况下,有一个更好的解决方案。请参阅Empty cells in HTML tables中的一些建议。

在技术方面,在无间断空间具有宽度和高度,根据字体,并且这不会对细胞的尺寸的最低要求。这可能很重要,尽管大多数情况下在行或列用作分隔符的情况下,例如,创建水平或垂直线。

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

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