1

我正在尝试更改.foo用户悬停时的文本颜色,但.bar我不确定如何仅使用 CSS 来执行此操作。我曾尝试使用 CSS 前置元素选择器~,但这不起作用。

http://jsfiddle.net/847E2/

<div>
  <p class="foo">Foo</p>
  <ul class="bar"><li>Bar<li></ul>
</div>

.bar:hover~.foo {
    color: red;
}

编辑 - 我的要求已经改变。我更新了我的 HTML 结构以.bar制作<ul>

4

3 回答 3

1

兄弟选择器~不选择它前面的元素,只选择它后面的元素。因此,当将鼠标悬停在元素上时,无法选择.bar该元素,因为它在前面。.foo.bar

你可以这样做:

jsFiddle 示例

div:hover :not(:hover) {
    color: red;
}

基本上,这是在将color:red鼠标悬停在父元素上时将子元素的颜色设置为div. 但是,它不会应用于:hover您所在的元素。当您将鼠标悬停在兄弟元素上时,这看起来好像颜色正在发生变化。

于 2013-11-06T19:41:55.250 回答
0

这是一种使用 CSS 的方法(不需要 CSS3):

div:hover p{
    color: red;
}
.foo:hover{
    color: black;
}
div:hover p.bar{
    color: black;
}

jsFiddle 示例

于 2013-11-06T19:48:45.677 回答
0

+ 选择器是一个相邻的兄弟组合器选择器,允许您选择直接在另一个特定元素之后的元素。

如果有 .bar 类名,是否使用任何元素都没有关系。

注意:没有“前一个兄弟”选择器,这就是我更改 DOM 中元素顺序的原因。

.bar:hover + .foo {
    color: red;
}

演示http://jsfiddle.net/847E2/11/

也可以看:http ://css-tricks.com/child-and-sibling-selectors/

是否有“前一个兄弟姐妹”CSS 选择器?

于 2013-11-06T19:45:31.327 回答