div:hover 样式为何对 p 元素无效?
在给出的 html 和 css 代码中,<p>mmm</p> 悬停时不会变色,而 <p>sss</p> 会变为红色。这是因为:
css 继承
color 是一个继承属性,意味着子元素会继承父元素的 color 值。在这种情况下,p 元素从父元素 div 继承了 yellow 颜色。
hover 优先级
虽然 div:hover 的优先级高于 p,但它只能覆盖 div 本身的样式,而不能覆盖子元素 p。
解决方法
要让 p 在悬停 div 时变色,有两种方法:
p:hover { color: red; }
div:not(:hover) p { color: yellow; } div:hover { color: red; }
通过使用这些方法,你可以确保 p 元素在悬停 div 时变为红色,而保持其默认 yellow 颜色。