css 如何选择元素但排除其子元素

bqjvbblv  于 2023-03-05  发布在  其他
关注(0)|答案(3)|浏览(360)

我理解#div:hover:not(.class)的工作原理。但是,如何实现“LI”元素的“悬停”效果,而当鼠标位于LI中的某个“DIV”上时排除悬停效果呢?
例如

<li>Hello   <div id="#no-hover">Bye</div>  </li>

我想为li获得悬停效果:

li:hover{ text-color:#CCC; }

但是当鼠标在#no-hoverdiv上时以某种方式排除悬停效果。
有什么想法吗?

pftdvrlh

pftdvrlh1#

根据您的问题编辑,为了最大化浏览器兼容性(我的意思是,* 为什么不 * 如果可以的话?),您可以完全不使用CSS3选择器。

li, li:hover div#no-hover {
    color: #000;
}

li:hover {
    color: #ccc;
}

不过,如果要影响no-hover分类的多个元素,您可能希望使用类而不是ID。在这种情况下,您可以对第一个规则执行此操作:

li, li:hover div.no-hover {

无论哪种方式,因为选择后代及其祖先比只选择祖先更具体,所以假设祖先上的组合符相同,它将覆盖第二个规则,即使第二个规则出现得更晚。

ttcibm8c

ttcibm8c2#

    • 更新日期:**

如果您只想让悬停效果不应用于Bye,那么您可以为它创建一个额外的 * hover * 规则,并显式地设置颜色(如其他答案所示)。
如果悬停效果不应该应用于整个li元素,那么我认为没有办法做到这一点。您需要某种父选择器,这在CSS中是不存在的。
是的,这是相当容易尝试:http://jsfiddle.net/5vaUW/
(可能仅在您的浏览器支持CSS3时有效)
您可能想阅读更多关于CSS3 selectors的内容,在这里您可以找到:
选择符是一个或多个由组合符分隔的简单选择符序列的链。一个伪元素可以附加到选择符中的最后一个简单选择符序列。
简单选择符序列是一个没有用组合符分隔的简单选择符链。它总是以类型选择符或通用选择符开头。序列中不允许有其他类型选择符或通用选择符。
简单选择器可以是类型选择器、通用选择器、属性选择器、类选择器、ID选择器或伪类。

ttisahbt

ttisahbt3#

在css2中,将是:

li:hover{
       color:#CCC;
    }

     li:hover div{
     color: #000;   
    }

对于CSS3,我同意Felix Kling的观点。

相关问题