parent*:hover {}和parent:hover*{}之间有什么区别?

gok*_*ess 4 css css-selectors

我想知道CSS选择器之间有什么区别.如果我改变这个:

.parent *:hover {}
Run Code Online (Sandbox Code Playgroud)

对此:

.parent:hover * {}
Run Code Online (Sandbox Code Playgroud)

在随后的代码中:

#child {
  width: 100%;
  height: 100%;
}
.parent {
  background-color: green;
  width: 100px;
  height: 100px;
}

.parent:hover * { 
  background-color: red;
}
Run Code Online (Sandbox Code Playgroud)
<html>
  <head>
    <title>HTML Sample</title>
  </head>
  <body>
    <div class="parent">
      <div id="child"></div>
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

没有任何变化,悬停效果保持不变.我在这里错过了什么?

Dai*_*Dai 7

  • .parent *:hover {}意思是:在悬停状态下(即,当后代悬停时),使用任何元素的所有后代作为目标class="parent"

  • .parent:hover * {}表示任何元素的所有后代都是class="parent",当元素class="parent"处于悬停状态时(请注意,如果后代元素悬停.parent,即使它们不形成单个内聚视觉单元(例如position: absolute正在使用) ).

如果您<div class="parent">有多个孩子,则第一个规则(.parent *:hover {})将只影响一个后代,而该特定传人徘徊-所以,如果用户鼠标悬停另一个元素则样式规则会改变.

第二个规则就是如果.parent鼠标悬停,那么所有后代都会改变它们的样式.这不是一个很好的样式规则,因为后代选择将选择一切.parent(例如每单一<span>,<a>,<p>,等).您可能应该使用更具体的选择器.