合并相似CSS选择器后代码失效,请问我遗漏了什么?
问题分析与解决
你的合并写法存在CSS选择器语法错误,导致样式无法生效,具体问题和修正方案如下:
错误原因
你写的form[id^="reply_form-c"]r1.odgovor是无效的CSS选择器:
[id^="reply_form-c"]是属性起始匹配选择器,但后面直接追加的r1不属于合法的选择器语法——它是ID属性值的一部分,不能单独放在属性选择器之外。- 同理,
div[id^="cmtforms-c"]r1也犯了同样的错误。
正确的合并写法
根据你原始的ID规则(reply_form-cNr1、cmtforms-cNr1,其中N是数字1-4),可以用属性起始匹配+属性结尾匹配的组合选择器来精准匹配:
form[id^="reply_form-c"][id$="r1"].odgovor div[id^="cmtforms-c"][id$="r1"] input { color: red; }
选择器说明
[id^="reply_form-c"]:匹配ID以reply_form-c开头的form元素[id$="r1"]:进一步限定ID以r1结尾的form元素,避免误匹配其他类似ID(比如reply_form-c1r2).odgovor:保留原有的类选择器,确保匹配的form包含该类- 后面的div选择器逻辑完全一致
如果你的场景中不存在其他以reply_form-c开头但不以r1结尾的元素,也可以简化为更简洁的写法:
form[id^="reply_form-c"].odgovor div[id^="cmtforms-c"] input { color: red; }
这种写法会匹配所有ID以reply_form-c开头且带有odgovor类的form,以及其后代中ID以cmtforms-c开头的div下的input元素,同样能覆盖你原始的4段样式。
内容的提问来源于stack exchange,提问作者Aleksandar
相关产品推荐
相关产品推荐

