我正在与(又一个)IE8 错误作斗争。
基本上,我有一个小的方形容器,里面有一个用 :before 和 :after 伪元素构建的箭头。HTML 是这样的:
<div class="container">
<div class="arrow" />
</div>
而 CSS 是
.container {
height: 58px;
width: 58px;
background-color: #2a5a2a;
}
.arrow {
padding-top: 7px;
}
.arrow:before {
margin: 0 auto;
content: '';
width: 0;
border-left: 12px transparent solid;
border-right: 12px transparent solid;
border-bottom: 13px gray solid;
display: block;
}
.arrow:after {
margin: 0 auto;
content: '';
width: 12px;
background-color: gray;
height: 14px;
display: block;
}
现在,当我将鼠标悬停在容器上时,我希望其中的箭头改变颜色。我添加了这个 CSS:
.container:hover .arrow:after {
background-color: white;
}
.container:hover .arrow:before {
border-bottom-color: white;
}
这就是问题开始的地方。这适用于大多数浏览器,但在 IE8 上, background-color 属性没有被覆盖。所以我只得到了新颜色的箭头尖端,而不是构成它“主体”的正方形。
为了让事情更有趣,如果我添加以下内容也将容器背景颜色更改为稍微不同的东西,那么一切都会开始工作并且箭头的背景颜色会发生变化!
.container:hover {
background-color: #2a5a2b;
}
如果我只为容器设置 :hover 状态,并且设置它已经拥有的相同背景颜色,那么它不起作用。如果我想改变背景颜色,我必须改变它。
如果您想尝试一下,这里有一个 jsfiddle:http: //jsfiddle.net/Ke2S6/现在它与悬停时的容器具有相同的背景颜色,因此它不适用于 IE8。更改一个数字,它将开始工作。
所以......有什么想法吗?