【发布时间】:2011-06-04 15:34:18
【问题描述】:
我尝试解决 IE8 中出现的问题。 html很简单:
<div id="overlay">
</div>
<div id="imgcontainer">
<div>
<div id="source">
</div>
</div>
</div>
当我在 IE 中使用“0”设置(使用 jQuery)“#source”元素的不透明度时,我可以看到#overlay 的背景,而不是#imgcontainer > div,但为什么呢? 有一个javascript代码:
$(function(){
$("#source").css({
opacity: "0",
});
$("#overlay").css({
width: $(window).width(),
height: $(window).height(),
display: "block",
opacity: "0.6"
});
$("#imgcontainer").css({
zIndex: 2,
position: "fixed",
opacity: "1",
left: "0",
right: "0",
top: "100px",
display: "block"
});
});
您可以在 jsFiddle 上试用实时示例。
UPD:
经过一些实验,我找到了解决方案。这确实是 html\css 问题,所以我对代码进行了一些重构并删除了 jQuery 标签。想象一下我们有这样的 html 模糊:
<body>
<div id="d1">
<div id="d2">
<div id="d3">
</div>
</div>
</div>
</body>
以及 css 样式:
body {
background-color: #c8c8c8;
}
#d1 {
background-color: #6c0922;
width: 500px;
border: 1px solid black;
filter: alpha(opacity = 100);
}
#d2 {
background-color: #146122;
width: 350px;
margin: 20px auto;
border: 1px solid black;
}
#d3 {
background-color: #0080c0;
height: 100px;
margin: 10px 65px;
filter: alpha(opacity = 0);
zoom: 1;
}
乍一看一切正常,我们希望#d3 变得透明,我们可以看到#d2 背景(深绿色)。但在 IE7\8 中就没有这么简单了。在 IE 中,我们可以通过 #d2 和 #d1 看到 body!(灰色)背景。 #d1 中的所有魔法你猜对了。当我们删除filter: alpha(opacity = 100); 时,一切正常。
您可以问 - 但是为什么您现在将 opacity = 1 设置为不透明的元素?我不知道 :)。可能出于某种原因你应该使用这种行为。非常有趣和意想不到的行为。
您可以在jsFiddle 中使用此示例。
【问题讨论】:
-
您使用的是哪个版本的 jQuery?
-
这更像是一个 CSS/HTML 问题,它是 jQuery,如果你删除所有 jQuery 并使其成为纯 CSS,你会发现问题仍然存在。从来没有遇到过这样的事情,想知道原因和解决办法会很有趣。
-
@Dan:同意,这更像是 CSS/HTML 问题
标签: html css internet-explorer-8 internet-explorer-7 opacity