【发布时间】:2015-02-17 16:57:41
【问题描述】:
这有点奇怪,但请耐心等待。这仅影响 IE10 和 IE11,不影响 Chrome、FF、Safari 和 IE9 及更早版本。如果您有一个 <label> 用于嵌套在分配了 :hover 的类中的另一个元素,即使您没有将鼠标悬停在该元素上,它也会匹配该选择器。在下面的示例中,如果您将鼠标悬停在第一个 div 上,两个 divs 都会突出显示。
<div>
<select id="min-price">
<option>A</option>
</select>
</div>
<div>
<label for="min-price"></label>
<select>
<option>B</option>
</select>
</div>
还有这个 CSS:
div {
padding: 1em;
margin-bottom: 1em;
border-bottom: 1px solid red;
}
div:hover {
background: #f1f1f1;
}
div:hover > select {
background-color: #a3a3a3;
}
示例可以在这里找到。
http://jsfiddle.net/0c67oew2/3/
有人解释为什么会这样吗?
【问题讨论】:
-
这不是IE9的问题,只是ie10及以上版本的问题。
-
你在用什么
DOCTYPE? -
它在小提琴中。
<!DOCTYPE html> -
这是一个非常奇怪的行为,但是这样想。当您悬停
div时,在某些时候它也会悬停select子元素,根据设计将反映到其label中。在IE上看起来会导致这个bug。如果您将鼠标悬停在第二个div上,则不会发生这种情况。 -
@MelanciaUK,我倾向于这是 IE10+ 渲染引擎的设计缺陷。 CSS 从右到左解析。引擎匹配 .price,然后向左移动到下一个选择器,找到 :hover,(不检查类)并匹配,移动到下一个选择器 .control 并匹配
标签: css internet-explorer internet-explorer-10 internet-explorer-11