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 */
}
真可爱。实际上,几周前我在工作中为一个内部工具编写了一些代码,使用了
[colspan]
。如果我曾在 IE 中查看过输出,我本可以自己发现这一点(并且那台机器上安装的是 IE8)。但是我可以使用 Firefox,幸运的是我生成的 HTML 文件不需要针对 IE(耶!)。您不能将样式应用于所有 td/th 元素,然后将其反转为单个 colspan 项目吗?
例如:
td, th { background-color: red; }
td[colspan=1], th[colspan=1] { background-color: white; }
Chris
这正是我首先想到的。而且它有效。
实际上,我当时的想法略有不同。该示例将为其他浏览器产生不愉快的结果。
您需要将“默认”规则定义为也包含仅 td/th 选择器(对于您未指定 colspan 的非 IE8 浏览器)。
例如:
td[colspan],
th[colspan] {
background: red;
}
td,
td[colspan=”1″],
th,
th[colspan=”1″] {
background: #fff;
}
此外,您可能仅通过条件注释向 IE8 提供后来的规则。
无论版本如何,都不应该使用 IE。
哈欠。这是一个多么陈旧的论点。当 IE6 首次发布时,人们对其他浏览器也使用了这个论点。
使用任何浏览器 - 但请使用最新版本。
好吧,即使我是一个初学者,在编写 CSS 时,我感觉最困难的事情就是让它在 IE 和所有其他浏览器中都能正常工作。IE 就是不配合。IE 的意思就像“我与众不同。我按自己的方式做事……”。
请记住,如果不是 IE 及其所有麻烦,那么 CEO 和家庭主妇就会用 Front Page 所见即所得的垃圾来污染网络(就像 15 年前一样)。我对 IE 的错误很满意,这正是我有工作的原因之一。谢谢微软!
微软的人在抽什么?
抽烟和喝酒,我补充一句。
看起来是使用 Modernizr 的好地方,不是吗?
您仍然需要编写所有额外的针对 IE8 的无意义代码,但至少您可以将其与漂亮的正常内容分开。
尽管我想在所有这些选择器之前添加 .ie8 会增加一些额外的标记……
我刚刚学到了新东西 :)
非常感谢!
IE7 也有同样的错误
在我的测试中,它没有。
对!我在 Windows 7 IE9 上通过切换模式对其进行了测试 :)
也许您应该尝试在 IE7 的实际副本中进行测试。
IE7(标准模式):有效(仅 colspan th,td 为红色)
IE7(怪异模式):无效(_无_ th,td 为红色)
有趣!IE 正在努力维护其声誉 :)
是的,这完全是因为
IE 是垃圾,应该被销毁!!!!
为什么,我的意思是,为什么任何人会使用那个交付时就过时的浏览器???WTF 人们醒醒!
因为系统管理员有很多优势。他们主要的原因是确保他们不会破坏其公司的任何内部 Web 应用程序。他们不关心最新的 HTML5 功能,但他们确实担心当 Firefox 等浏览器自动更新并破坏其应用程序时会带来的麻烦。
IE 正在努力维护其声誉。
想要一个好的 EQ 测试?管理 IE。
很棒的漏洞利用。但是,我喜欢完全跳过 IE8。<meta http-equiv=”X-UA-Compatible” content=”IE=7, IE=edge” />我知道我会因为验证而失去我的金星,但 IE6 和 IE7 可以用一个旧版样式表(通常)来解决。转向现代浏览器……
colspan=”0″?您将如何处理 colspan 值为零的情况?
IE(7,尚未在其他版本上测试)仍然显示单元格,并且_不_应用背景。
Fx 和 Chrome 也显示单元格,并且_确实_应用了背景。
好吧,是的,但是开发人员使用 colspan=”0″ 有什么实际原因吗?
除了作为此特定错误的解决方法之外?
我想不出来。:)
IE 或另一个称呼是互联网爆炸器。将其标记为另一个 IE 失败
如果 IE8 支持 :not,那么解决这个问题就会很容易
td[colspan]:not([colspan=”1″])
但是,好吧,只是另一个 IE 错误,就像其他许多错误一样……
天哪,微软的人什么时候才能推出一个正常工作的“现代”浏览器。唉……
他们做到了。你没见过 IE 9 吗?
与 IE 8 及更低版本相比,IE9 作为现代浏览器非常棒。
尽管 IE 浏览器兼容性让我头疼,但本文有一个简单的解决方案……停止使用表格!!
有趣的帖子。不错的教程,并且可以在所有浏览器中正常工作。
非常感谢。