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










