Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IE CSS错误:表格边框显示div,可见性:隐藏,位置:绝对 问题_Css_Internet Explorer - Fatal编程技术网

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;
}