我有一个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的错误。
答案 0 :(得分:1)
你试过这个吗? -
#SomeTable.hideAll td { display: none; }
#SomeTable.showXYZ td.show { display: block; }
答案 1 :(得分:1)
<td>
元素和其他与表格相关的元素不应设置为display:block
或display:inline
。它们有自己特定的与表相关的显示类型,应该使用它们。
例如:
table.mytable {dislpay:table;}
td.mycell {display:table-cell;}
在某些浏览器中,display:block;
也可能有效,但这不正确,肯定会导致其他浏览器出现问题。以上显示类型是正确的。
然而,在不同浏览器之间支持这些显示类型存在一些不一致之处,尤其是旧版本的IE。
最适合所有浏览器的选项,只是指定您想要显示的任何内容 - 即
#SomeTable.hideAll .hide { display: none; }
#SomeTable.showXYZ .show { } /* nothing here */
这样做,当您将类指定为show
时,它将选择元素类型的默认显示类型。即使您在hide
和show
之间切换,也可以再次切换。