53

我有<a>一个<span>孩子。我已经编写了一些 CSS,当父级悬停时它会改变子级的边框颜色,但是当我悬停子级时它也会改变边框颜色,这是不应该的。

a {
    padding: 50px;
    border: 1px solid black;
}

a span {
    position: absolute;
    top: 200px;
    padding: 30px;
    border: 10px solid green;
}

a:hover span {
    border: 10px solid red;
}   
<a>
    Parent text
    <span>Child text</span>    
</a>

4

2 回答 2

76

更新

以下对 2013 年有意义。但是,现在,我将使用如下:not()所述的选择器。


CSS 可以被覆盖。

演示:http: //jsfiddle.net/persianturtle/J4SUb/

用这个:

.parent {
  padding: 50px;
  border: 1px solid black;
}

.parent span {
  position: absolute;
  top: 200px;
  padding: 30px;
  border: 10px solid green;
}

.parent:hover span {
  border: 10px solid red;
}

.parent span:hover {
  border: 10px solid green;
}
<a class="parent">
    Parent text
    <span>Child text</span>    
</a>

于 2013-02-09T23:11:36.397 回答
10

如果您不关心支持旧浏览器,则可以使用:not()排除该元素:

.parent:hover span:not(:hover) {
    border: 10px solid red;
}

演示:http: //jsfiddle.net/vz9A9/1/

如果您确实想支持它们,我想您将不得不使用 JavaScript 或再次覆盖 CSS 属性:

.parent span:hover {
    border: 10px solid green;
}
于 2013-02-09T22:59:51.923 回答