0

假设我有这个 HTML:

<div class="SomeClass">test</div>
<div class="SomeClass" id="SomeID">test</div>
<div class="SomeClass">test</div>

有了这个 CSS

.SomeClass{color:blue;}
.SomeClass:hover{color:red}

我希望悬停效果不适用于SomeIDdiv。我可以用 jQuery 做到这一点,但我想知道是否有更简单的方法可以只用 CSS 来做到这一点。

感谢您的建议。

4

4 回答 4

4

CSS是按顺序解析的,这意味着如果在你定义之后

.SomeClass:hover { color: red; }

然后定义一个规则

#SomeId.SomeClass:hover { color: blue; }

那应该“覆盖”最初的color: red;

于 2012-08-16T15:54:29.490 回答
3

只需将另一个规则分配给 id 为 SomeID 的 div。这将覆盖另一条规则。

.SomeClass{color:blue;}
.SomeClass:hover{color:red}
#SomeID:hover{color:blue}

jsFiddle 示例

于 2012-08-16T15:54:02.297 回答
1

只需覆盖样式:

#SomeID:hover {
    color:blue;
}

或者,您可以使用:

.SomeClass:not(#SomeID):hover {
    color:red;
}

然后更容易改变它,但更少的浏览器支持。

于 2012-08-16T15:55:25.493 回答
0

让我们看一下链接伪类的特殊性:

记住:LAHV ( :link, :active, :hover, :visited)。

首先,为了正确级联,让我们将以下内容分配给.SomeClass

.SomeClass:link, .SomeClass:active, .SomeClass:visited { color: blue; }
.SomeClass:hover { color: red; }

接下来,让我们指定#SomeID

#SomeID:hover { color: blue; }

id总是优先于class.

于 2012-08-16T15:57:24.010 回答