CSS :: child设置为在父悬停时更改颜色,但在悬停时也会更改

HoG*_*oGo 39 html css parent-child hover

我有<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;
}   
Run Code Online (Sandbox Code Playgroud)
<a>
    Parent text
    <span>Child text</span>    
</a>
Run Code Online (Sandbox Code Playgroud)

Rap*_*nah 65

更新

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;
}
Run Code Online (Sandbox Code Playgroud)


Ble*_*der 9

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

.parent:hover span:not(:hover) {
    border: 10px solid red;
}
Run Code Online (Sandbox Code Playgroud)

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

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

.parent span:hover {
    border: 10px solid green;
}
Run Code Online (Sandbox Code Playgroud)