在CSS中,:hover
伪类不会自动将样式继承给子元素,这与常规的CSS属性继承机制不同。这是CSS设计的一个特性,而非bug。
伪类选择器特殊性::hover
伪类本身不会创建继承链,它只作用于被选中的元素本身。
CSS继承机制:只有某些特定的CSS属性会默认继承(如color、font-family等),而其他属性需要显式设置inherit
才会继承。
.parent:hover,
.parent:hover .child {
color: red;
}
.child {
color: inherit; /* 显式继承父元素颜色 */
}
.parent {
--hover-color: black;
}
.parent:hover {
--hover-color: red;
}
.child {
color: var(--hover-color);
}
.parent {
&:hover, &:hover .child {
color: red;
}
}
不是所有CSS属性都能继承,布局相关属性(如width、margin等)通常不会继承
某些元素(如input、button)可能有默认样式覆盖继承效果
使用all: inherit
可以强制继承所有可继承属性,但要谨慎使用
希望这些解决方案能帮助您解决父元素:hover伪类不影响子元素颜色的问题。