以下样式不会起作用。.son0和.son1有各自的字体颜色,鼠标经过父元素.father时,只会改变.father的字体颜色,其子元素的字体颜色不受影响。因为:hover的样式只是追加给.father本身的,而不是.father下面的所有元素。解决办法见下文。

.father {
  color: purple;
.father:hover {
  color: blue;
.son0 {
  color: red;
.son1 {
  color: green;
<div class="father">
  father
  <div class="son0">son0</div>
  <div class="son1">son1</div>
</div>

我们可以在hover时,通过 通配符 * 改变所有元素的颜色,如下。 .father:hover意思是:加了:hover的元素本身。 .father:hover *意思是:加了:hover的元素下面所有子孙元素,此时父元素的颜色不会改变。因此需要将再给.father本身改一下颜色。

.father {
  color: purple;
.father:hover * {
  color: blue;
.father:hover {
  color: blue;
.son0 {
  color: red;
.son1 {
  color: green;

动画4.gif

  • ChatGPT保姆级教程,一分钟学会使用ChatGPT!
  • 两行CSS让页面提升了近7倍渲染性能!
  • 为什么我们正在放弃 CSS-in-JS
  • 如何给所有的async函数添加try/catch?
  • React CSS-In-JS 方案 :  Linaria Vs Styled-Components
  • 为什么B站的弹幕可以不挡人物
  • 三面面试官:运行 npm run xxx 的时候发生了什么?
  • 最近两周出去面试遇到的面试题(前端初级、长更)
  •