我试图让这种效果在 IE8 中起作用,但似乎找不到一个好的解决方案。
有什么想法吗?
我试过添加:
.image {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";}
.box:hover .image {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";}
但这似乎不适用于悬停...
我试图让这种效果在 IE8 中起作用,但似乎找不到一个好的解决方案。
有什么想法吗?
我试过添加:
.image {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";}
.box:hover .image {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";}
但这似乎不适用于悬停...
问题很可能归结为在使用某些文档类型时在标签:hover
之外的 IE8 中不支持该问题。a
一般来说,如果我想在旧版浏览器中实现悬停效果,我会使用a
标签来包装元素:
<a href="#"><img /></a>
然后使用以下目标:
a:hover img { opacity: 0.5; filter: Alpha(opacity=50); }
您可能会发现不是不透明度导致了问题,如果您切换到更改另一个 css 属性 onhover(比如边框),如果不使用a
标签,它仍然无法工作。
看来您的 doctype 没问题,所以上面的注释不是问题。但是,您似乎正在使用 html5 标签,这也会导致您在 IE8 中出现问题。对此的修复如下。
旧版本的 Internet Explorer 不能完全识别新的 html5 标签,但是如果您创建希望在 JavaScript 中使用的标签的单个实例,IE 开始认为这些标签是真实的。这通常是html5.js填充程序的一部分。确保这些新标签在您的 CSS 中显示为块也是一个好主意。
<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8">
<title> Opacity IE8 </title>
<style>
.container {
display: block;
position: relative;
}
.container .box {
display: block;
width: 100px;
height: 100px;
background-color: red;
position: absolute;
opacity: 0;
filter: Alpha(opacity=0);
}
.container:hover .box {
opacity: 1;
filter: Alpha(opacity=100);
}
</style>
<script>
document.createElement('figure');
document.createElement('figcaption');
</script>
</head>
<body>
<figure class="container">
hover me
<figcaption class="box">
<ul class="list">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</figcaption>
</figure>
</body>
</html>
这是我在我的网站中使用的,我在任何浏览器上都没有遇到过任何问题,包括旧版本的 IE: { filter: Alpha(opacity=80); opacity: .8; -moz-opacity: .8; }
。