16

我在另一个绝对定位的 div 中有一个绝对定位的 div。子 div 内容远大于父级可以包含的内容。这是设计使然。我需要子 div 溢出其父级。它在除 IE 8 之外的所有其他浏览器中都这样做(IE 7 看起来不错,不确定)在 IE8 中,超出父级的子级部分被剪裁。它在那里,但只是不可见,可以通过 IE 开发人员工具进行验证。我尝试了 z-index,尝试显式设置溢出:可见,完全没有运气。

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

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

任何人都知道如何解决这个问题?

4

3 回答 3

4

我使用这个解决了它如何阻止 Internet Explorer 的专有渐变过滤器切断应该溢出的内容?

我的解决方案稍作修改,只需在您想要透明的容器内放置一个带有“ie_rgba_fix”类的空 div,在特定于 IE 的地方添加这个 CSS,孩子们将不再像溢出一样剪辑:隐藏

/* 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)";
}
于 2010-09-27T11:25:53.110 回答
1

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

于 2010-09-26T23:27:24.893 回答
0

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

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

但是,伪元素是样式化的内容,而不是 DOM 对象,因此该-ms-filter属性是无用的。为了妥协,我使用与我想要的原始过滤器匹配的 PNG(实际上是一个data:URL,但两者都可以)作为background-image.

我将伪元素强制为容器的完整大小,对其进行绝对定位,然后ta-da,子元素在父元素之外可见,并且父元素仍然具有透明背景。

.container.ie8 {
    background-color: transparent;
    position: relative;
}
.container.ie8:before {
    background-image: url("data:image/png;base64,...");
    display: block;
    height: 100%;
    left: 0;
    position: absolute;
    top: 0;
    width: 100%;
}
于 2013-10-28T20:26:00.810 回答