我理解#div:hover:not(.class)的工作原理。但是,如何实现“LI”元素的“悬停”效果,而当鼠标位于LI中的某个“DIV”上时排除悬停效果呢?例如
#div:hover:not(.class)
<li>Hello <div id="#no-hover">Bye</div> </li>
我想为li获得悬停效果:
li:hover{ text-color:#CCC; }
但是当鼠标在#no-hoverdiv上时以某种方式排除悬停效果。有什么想法吗?
pftdvrlh1#
根据您的问题编辑,为了最大化浏览器兼容性(我的意思是,* 为什么不 * 如果可以的话?),您可以完全不使用CSS3选择器。
li, li:hover div#no-hover { color: #000; } li:hover { color: #ccc; }
不过,如果要影响no-hover分类的多个元素,您可能希望使用类而不是ID。在这种情况下,您可以对第一个规则执行此操作:
no-hover
li, li:hover div.no-hover {
无论哪种方式,因为选择后代及其祖先比只选择祖先更具体,所以假设祖先上的组合符相同,它将覆盖第二个规则,即使第二个规则出现得更晚。
ttcibm8c2#
如果您只想让悬停效果不应用于Bye,那么您可以为它创建一个额外的 * hover * 规则,并显式地设置颜色(如其他答案所示)。如果悬停效果不应该应用于整个li元素,那么我认为没有办法做到这一点。您需要某种父选择器,这在CSS中是不存在的。是的,这是相当容易尝试:http://jsfiddle.net/5vaUW/(可能仅在您的浏览器支持CSS3时有效)您可能想阅读更多关于CSS3 selectors的内容,在这里您可以找到:选择符是一个或多个由组合符分隔的简单选择符序列的链。一个伪元素可以附加到选择符中的最后一个简单选择符序列。简单选择符序列是一个没有用组合符分隔的简单选择符链。它总是以类型选择符或通用选择符开头。序列中不允许有其他类型选择符或通用选择符。简单选择器可以是类型选择器、通用选择器、属性选择器、类选择器、ID选择器或伪类。
Bye
li
ttisahbt3#
在css2中,将是:
li:hover{ color:#CCC; } li:hover div{ color: #000; }
对于CSS3,我同意Felix Kling的观点。
3条答案
按热度按时间pftdvrlh1#
根据您的问题编辑,为了最大化浏览器兼容性(我的意思是,* 为什么不 * 如果可以的话?),您可以完全不使用CSS3选择器。
不过,如果要影响
no-hover
分类的多个元素,您可能希望使用类而不是ID。在这种情况下,您可以对第一个规则执行此操作:无论哪种方式,因为选择后代及其祖先比只选择祖先更具体,所以假设祖先上的组合符相同,它将覆盖第二个规则,即使第二个规则出现得更晚。
ttcibm8c2#
如果您只想让悬停效果不应用于
Bye
,那么您可以为它创建一个额外的 * hover * 规则,并显式地设置颜色(如其他答案所示)。如果悬停效果不应该应用于整个
li
元素,那么我认为没有办法做到这一点。您需要某种父选择器,这在CSS中是不存在的。是的,这是相当容易尝试:http://jsfiddle.net/5vaUW/
(可能仅在您的浏览器支持CSS3时有效)
您可能想阅读更多关于CSS3 selectors的内容,在这里您可以找到:
选择符是一个或多个由组合符分隔的简单选择符序列的链。一个伪元素可以附加到选择符中的最后一个简单选择符序列。
简单选择符序列是一个没有用组合符分隔的简单选择符链。它总是以类型选择符或通用选择符开头。序列中不允许有其他类型选择符或通用选择符。
简单选择器可以是类型选择器、通用选择器、属性选择器、类选择器、ID选择器或伪类。
ttisahbt3#
在css2中,将是:
对于CSS3,我同意Felix Kling的观点。