Javascript IE8中的不透明度取决于位置:相对

Javascript IE8中的不透明度取决于位置:相对,javascript,internet-explorer-8,opacity,Javascript,Internet Explorer 8,Opacity,我注意到在某些情况下,表单元素在IE8中不能透明。这取决于位置:相对CSS标记。下面的HTML演示了该问题: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; chars

我注意到在某些情况下,表单元素在IE8中不能透明。这取决于位置:相对CSS标记。下面的HTML演示了该问题:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>title</title>

<style type="text/css">

.ie-opaque {
    zoom : 1;
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
    filter: alpha(opacity=50);
}

.relative {
    position: relative;
}

</style>


</head>
<body>

    <div class="ie-opaque">
        <form>
        <fieldset>
        <ol>
            <li class="relative">
                <label for="test">label</label>
                <input id="test"/>
            </li>
            <li class="relative">
                <button>push</button>
            </li>
            <li>
                <label for="test">label</label>
                <input id="test"/>
            </li>
            <li>
                <button>push</button>
            </li>
        </ol>
        </fieldset>
        </form>
    </div>

</body>
</html>

标题
.ie不透明{
缩放:1;
-ms过滤器:“progid:DXImageTransform.Microsoft.Alpha(不透明度=50)”;
过滤器:α(不透明度=50);
}
.亲戚{
位置:相对位置;
}
  • 标签
  • 标签
  • 在IE8中,第3项和第4项是透明的,第1项和第2项不是透明的。知道为什么吗?

    使用带有“li”的类是一种不好的做法,因为它们是为列出具有类似外观的类似信息而设计的,我假设MS选择忽略对ie8中使用不应该使用的类和id的子元素的支持


    我建议在InternetExplorer7、8、9中使用伪类(效果不会在上显示),非静态子元素不会继承父元素的不透明性

    解决办法:

    • IE9:给父对象一个非静态的位置
    • IE8:让子对象继承过滤器样式
    • IE7:让子对象继承过滤器样式,并给父对象一个非静态位置
    从这里链接:


    这并不是一个真正的答案(对不起),但在某些浏览器(如果不是所有浏览器的话)中,除非在元素上明确定义了“position:relative;”,否则不应用某些样式属性是很常见的(尽管我在MSIE中看到的情况比较奇怪)。我一直认为这主要是因为向后兼容(而不是完全错误)。这是一个老问题,我甚至不记得br在哪个项目上我需要它,但听起来很有说服力,所以我给了你一个投票。@PeterSzanto-我认为这个答案应该标记为接受-我有同样的问题,这个答案解决了它。谢谢-我知道这是很久以前的事了,但这就是为什么我认为这将是一个好主意,因为许多用户仍然使用它与IEs斗争(就像我在一些项目中所做的那样)。