Internet explorer 8 IE 8绝对定位元素在其父剪辑问题之外

Internet explorer 8 IE 8绝对定位元素在其父剪辑问题之外,internet-explorer-8,filter,overflow,css-position,clipping,Internet Explorer 8,Filter,Overflow,Css Position,Clipping,我在另一个绝对定位div中有一个绝对定位div。子div的内容比父div可以包含的内容大得多。这是故意的。我需要孩子们从父母口中吐出来。它在除IE8(IE7看起来还可以,不确定)之外的所有其他浏览器中都会执行此操作。在IE8中,子对象的父对象之外的部分会被剪裁。它是存在的,但只是不可见,可以通过IE开发工具进行验证。 我尝试了z-index,尝试了显式设置溢出:可见,一点运气都没有 更新:我发现问题是由父div中定义的筛选器引起的,如下所示: -ms-filter: "progid:DXImag

我在另一个绝对定位div中有一个绝对定位div。子div的内容比父div可以包含的内容大得多。这是故意的。我需要孩子们从父母口中吐出来。它在除IE8(IE7看起来还可以,不确定)之外的所有其他浏览器中都会执行此操作。在IE8中,子对象的父对象之外的部分会被剪裁。它是存在的,但只是不可见,可以通过IE开发工具进行验证。 我尝试了z-index,尝试了显式设置溢出:可见,一点运气都没有

更新:我发现问题是由父div中定义的筛选器引起的,如下所示:

-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#66C6DEA2,endColorstr=#66C6DEA2)";

有人知道如何解决这个问题吗?

试着在绝对定位元素中创建元素
位置:relative
,和/或在绝对定位元素中的所有元素和相对元素周围添加一个包装器。

我用这个解决了这个问题

我的解决方案有点修改,只需在你想要透明的容器中放置一个类为“ie_rgba_fix”的空div,将这个CSS添加到特定于ie的地方,子对象将不再像溢出:隐藏那样剪辑

/* IE8 RGB A workaround */
div.ie_rgba_fix
{
  position: absolute;
  z-index: -1;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: transparent;
  -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#66C6DEA2,endColorstr=#66C6DEA2)";
}

我从这里的选中答案中得到了一个提示&链接的问题,但我不想使用空DIV(特别是因为其他浏览器不需要它)

相反,我设置了特定于IE8的CSS,它使用container DIV的
:before
伪元素

但是,伪元素不是DOM对象,因此
-ms filter
属性是无用的。为了折衷,我使用了一个与我想要的原始过滤器匹配的PNG(实际上是一个
数据:
URL,但两者都可以)作为
背景图像

我强制伪元素为容器的完整大小、绝对位置和ta da,子元素在父元素外部可见,父元素仍然获得透明背景

.container.ie8{
背景色:透明;
位置:相对位置;
}
.容器。ie8:之前{
背景图像:url(“数据:image/png;base64,…);
显示:块;
身高:100%;
左:0;
位置:绝对位置;
排名:0;
宽度:100%;
}

绝对子div中的元素是相对的。它们是两个带位置的div:relative和inside。我更新了问题,找到了原因,但仍然不知道如何解决它。这让我省去了很多头痛更新是一个救命稻草-这个问题快让我发疯了!