IE 8 认为所有表格单元格都有 Colspan 属性

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

Nathan Smith 让我知道了这个小宝石。IE 8(仅限)认为所有表格单元格都有 colspan 属性,无论它们是否真的有。所以,如果您想为具有该属性的表格单元格设置独特的样式,这有点棘手。

td[colspan],
th[colspan] {
   /* WARNING: this will apply in IE 8 to table cells
      even if they don't have a colspan */
   background: red;
}

我们期望发生的事情是这样的

但在 IE 8 中,每个表格单元格都匹配上了

这完全是 IE 8 独有的。7 或 9 都不这样做,而 6 不支持属性选择器,所以它也不行。它还认为 colspan 的值为 1,所以这些都不行

th[colspan],
th[colspan="1"],
th[colspan*="1"],
th[colspan^="1"],
th[colspan$="1"],
td[colspan],
td[colspan="1"],
td[colspan*="1"],
td[colspan^="1"],
td[colspan$="1"] {
  
	/* All problematic in IE 8 */ 

}

解决方案

如果您确实需要使此选择器生效,您可以改为选择 colspan 值为**除了**1 以外的任何值。有点冗长,但有效。

th[colspan*="0"],
th[colspan*="2"],
th[colspan*="3"],
th[colspan*="4"],
th[colspan*="5"],
th[colspan*="6"],
th[colspan*="7"],
th[colspan*="8"],
th[colspan*="9"],
th[colspan*="11"] {
  /* Styles */
}

td[colspan*="0"],
td[colspan*="2"],
td[colspan*="3"],
td[colspan*="4"],
td[colspan*="5"],
td[colspan*="6"],
td[colspan*="7"],
td[colspan*="8"],
td[colspan*="9"],
td[colspan*="11"] {
  /* Styles */
}