IE6 / 7 CSS类重写

时间:2011-01-17 15:43:45

标签: html css

我有一个css文件,如:

#SomeTable.hideAll td { display: none; }
#SomeTable.showXYZ .show { display: block }

当我将类show添加到td时,显示将覆盖以阻止chrome,FF和IE8。但是在IE6 / 7中,显示器保持不变,因为它没有被覆盖。在旧的IE中你有什么奇怪的事情需要做这样的css覆盖吗?我怀疑它与它有关或者不可能,或者我只是不理解确定覆盖的规则。

编辑:即使css规则看起来像

.hide { display: none; }
#SomeTable.showXYZ td { display: block }

css仍未更新。这不是一个特殊的东西,但必须是IE6 / 7的错误。

2 个答案:

答案 0 :(得分:1)

你试过这个吗? -

#SomeTable.hideAll td { display: none; }
#SomeTable.showXYZ td.show { display: block; }

答案 1 :(得分:1)

<td>元素和其他与表格相关的元素不应设置为display:blockdisplay:inline。它们有自己特定的与表相关的显示类型,应该使用它们。

例如:

table.mytable {dislpay:table;}
td.mycell {display:table-cell;}

在某些浏览器中,display:block;也可能有效,但这不正确,肯定会导致其他浏览器出现问题。以上显示类型是正确的。

然而,在不同浏览器之间支持这些显示类型存在一些不一致之处,尤其是旧版本的IE。

最适合所有浏览器的选项,只是指定您想要显示的任何内容 - 即

#SomeTable.hideAll .hide { display: none; }
#SomeTable.showXYZ .show {  } /* nothing here */

这样做,当您将类指定为show时,它将选择元素类型的默认显示类型。即使您在hideshow之间切换,也可以再次切换。