即使触发了 hasLayout,CSS 不透明度也无法在 IE7 或 IE8 中工作

Posted

技术标签:

【中文标题】即使触发了 hasLayout,CSS 不透明度也无法在 IE7 或 IE8 中工作【英文标题】:CSS Opacity not working in IE7 or IE8 even with hasLayout triggered 【发布时间】:2012-02-02 19:26:42 【问题描述】:

我有这个幻灯片,悬停时会弹出一个叠加层,您可以查看它here。只需将鼠标悬停在“精选”部分下方的任何图片上即可。在 FF、Webkit、IE9 中运行良好。我为小于 IE9 制作了一个单独的样式表,并在其中声明了宽度、高度、缩放、定位,使用了在 IE 中工作的所有过滤器......而且我在 IE7 或 IE8 中都没有得到不透明度。带有类覆盖的 div 附加了 JQuery,这是一个问题吗?这是我的CSS:

.overlay 
background-color:#fff;
 filter:alpha(opacity=60);
 -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
 filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65);
 zoom:1;
 width:160px;
 height:20px;
 z-index:50;
 position:absolute;
 bottom:0;
 

【问题讨论】:

对我来说似乎在 Windows 上的 IE8 中运行良好。它在悬停时消失到 100%,然后在鼠标移出时消失到 0%? 你是如何测试 IE7/8 的? IE9的浏览器模式?虚拟机? IETest? 我在 Windows 上使用浏览器模式进行测试,@nav 它应该只有 60% 的不透明度。 【参考方案1】:

您的褪色例程正在添加一个内联样式,该样式会导致 progid:DXImageTransform.Microsoft.Alpha(Opacity=60) 覆盖您的 CSS 中的 filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65)。淡入淡出例程通常会放置内联样式,但您需要确保它在您想要的位置结束(不透明度为 65%),或者在淡入淡出后消失以便使用 css(在 Firefox它似乎随着内联而消失,然后在完成后删除内联,以便拾取样式表的不透明度)。

编辑(添加关于使用 jquery 褪色的评论中的信息):如果您使用的是.fadeIn(),请尝试改用.fadeTo(400, 0.65)(请参阅http://api.jquery.com/fadeTo),400 是.fadeIn() 的默认持续时间,所以您可以改变这一点,第二个数字是最终的不透明度设置

【讨论】:

嗯,好的。我正在使用 JQuery 进行淡入和淡出.....这对我来说是一个新领域。你不会碰巧知道该怎么做吧? @Heather Walters--如果您使用的是.fadeIn(),请尝试使用.fadeTo(400, 0.65)(请参阅api.jquery.com/fadeTo),400 是.fadeIn() 的默认持续时间,因此您可以更改那个,第二个数字是最终的不透明度设置。 哇,这完全奏效了!您能否将此添加到您的答案中,以便我给您信用? @Heather Walters--根据您的要求将我的评论添加到答案中。

以上是关于即使触发了 hasLayout,CSS 不透明度也无法在 IE7 或 IE8 中工作的主要内容,如果未能解决你的问题,请参考以下文章

CSS:haslayout

css CSS:haslayout peekaboo 1

css CSS:haslayout peekaboo 2

CSS hasLayout修复没有副作用

尝试使用 JavaScript 触发 CSS 转换

haslayout详解