IE CSS错误:表格边框显示div,可见性:隐藏,位置:绝对 问题
我在一个页面上有一个IE CSS错误:表格边框显示div,可见性:隐藏,位置:绝对 问题,css,internet-explorer,Css,Internet Explorer,我在一个页面上有一个,该页面最初是用可见性隐藏的:隐藏;位置:绝对。问题是,如果以这种方式隐藏的包含一个使用边框折叠:折叠的表,并且在其单元格上设置了边框,则该边框在IE上仍然显示“通过”隐藏的 通过在IE6或IE7上运行下面的代码,自己尝试一下。您应该会看到一个白色页面,但您会看到: 可能的解决办法 因为这是在IE上发生的,而不是在其他浏览器上发生的,所以我认为这是一个IE bug。一种解决方法是添加以下代码以覆盖边框: .hide table tr td { border: non
,该页面最初是用可见性隐藏的:隐藏;位置:绝对
。问题是,如果以这种方式隐藏的
包含一个使用边框折叠:折叠的表,并且在其单元格上设置了边框,则该边框在IE上仍然显示“通过”隐藏的
通过在IE6或IE7上运行下面的代码,自己尝试一下。您应该会看到一个白色页面,但您会看到:
可能的解决办法
因为这是在IE上发生的,而不是在其他浏览器上发生的,所以我认为这是一个IE bug。一种解决方法是添加以下代码以覆盖边框:
.hide table tr td {
border: none;
}
我想知道:
- 这是已知的IE bug吗
- 是否有更优雅的解决方案/解决方法
代码
/*桌子的样式*/
.表tr td{
边框:1px纯色灰色;
}
.桌子{
边界塌陷:塌陷;
}
/*类用于隐藏节*/
.隐藏{
可见性:隐藏;
位置:绝对位置;
}
嘎嘎
关于您可能的解决方法:因为您想要可见性:隐藏而不是显示:无我认为表保持相同大小很重要。我担心将边界设置为“无”会改变这一点
如果您知道希望看到白色矩形,则将边框颜色设置为白色更安全。当然,如果您想通过隐藏表查看背景,它就不起作用。如果您没有使用绝对定位,我会假设隐藏时保持div的大小对您来说仍然很重要。但是,由于您使用的是绝对定位,因此可以使用
display: none;
这将完成同样的事情(在IE7中测试)
在visibility:hidden的情况下,隐藏的元素会占用相同的屏幕空间,就像它仍然存在一样。当您使用display:none时,它几乎就像是从DOM中删除的一样
您看到的原始问题可能是IE bug。我找到的解决方案是添加一个顶部/左侧以将渲染移出屏幕,这可以保护我们免受此类IE bug的影响。在上面的示例中,这意味着您将hide
类的CSS定义为:
.hide {
visibility: hidden;
position: absolute;
top: -10000px;
left: -10000px;
}
更多信息:这是一个IE漏洞。Firefox不会使用“边框间距”来识别“边框折叠”,这不会导致此问题。使用“显示:无”的解决方案是可行的,但还有另一种可能性。如果visibility属性是使用Javascript设置的,那么边框也会隐藏(正如预期的那样)。另一种可能的解决方法是在表格的样式中添加“filter:alpha(opacity=100);”。基于这些不同的注释,我通过在我的CSS主表中使用这个CSS类解决了这个问题:
.hidden {
position: absolute;
visibility: hidden;
}
以及专用于IE的CSS表单中的那些行(通过html页面上的一个hack包含):
这对我现在在IE8上的工作很好
非常感谢您的提示;) 为什么在使用样式表时不能正确地将其隐藏,但在使用Javascript设置样式时却会隐藏?Firefox不支持边框折叠
?当然,它是()的;你一定有别的意思。您建议使用边框间距
作为一种变通方法,但是代码看起来会是什么样子呢?请随意使用此JSFIDLE进行测试:。在这种情况下,请将边框颜色设置为transparent
。非常感谢,这修复了当包含div关闭可见性时iframe在IE中留下重影的相关问题。
.hidden {
position: absolute;
visibility: hidden;
}
table.hidden, .hidden table {
visibility: hidden;
position: absolute;
border-collapse: separate;
left: -1000px;
top: -1000px;
}