8

我在 IE9 中遇到了一个非常有趣的问题。在包装 div 上使用 filter: alpha(opacity=) 或 -ms-filter css 属性时,内部块元素的框模型会损坏。换句话说,垂直边距的折叠被禁用,而是添加了垂直边距。我只在 IE9 中遇到这个问题。IE7/8 不受影响。

这是一个带有孤立问题的jsFiddle 。使用触发器锚激活包含过滤器的类:包装 div 上的 alpha。(仅限 IE9)

任何想法为什么会发生这种情况?

提前致谢

4

2 回答 2

1

任何过滤器似乎都可以做到这一点(jsfiddle.net/7BFd7)。

我只能假设它为什么会这样做。似乎使用过滤器将元素设置为使用一些不进行边距折叠的未知显示或位置模式(如绝对位置、内联块和浮动或清除元素)。

无论如何.. 如果你只是想隐藏那个元素,你可以使用visibility: hidden,它具有相同的效果opacity: 0并且在任何地方都受支持。

如果要为不透明度设置动画,则必须通过条件注释或 Normalizr 进行浏览器嗅探,并opacity在 IE9 中进行动画处理,并在较旧的 IE 版本中应用过滤器。

于 2012-09-18T08:27:57.563 回答
0

仅使用 CSS 在 IE9 中“取消设置”文件管理器同时允许它在 IE8 及更低版本中应用的一种方法是以下仅针对 IE9 的代码:

.css-selector {
    filter:value;
    opacity:value;
}
@media all and (min-width:0) { /* the min-width query hides below IE9 */ 
    .css-selector { 
        filter:none; 
    } 
}

这样,您将只使用 opacity:value 而不是在 IE9 中过滤该元素。

于 2014-04-01T23:14:40.863 回答