如何让带逗号的CSS伪类选择器生效?
问题原因及解决办法
你的逗号位置没问题,问题出在选择器的逻辑上。
你写的两个选择器分别是:
ul > li:not(:first-child):选中列表里除第一个之外的所有liul > li:not(:last-child):选中列表里除最后一个之外的所有li
用逗号分隔后,这两个选择器的范围叠加起来会覆盖所有li元素——第一个li会被第二个选择器选中,最后一个li会被第一个选择器选中,中间的li更是同时被两个选择器命中,所以所有li都会变成水绿色。
如果你的需求是只给除了第一个和最后一个之外的li设置样式,应该把两个伪类连在一起写,不需要逗号:
ul > li:not(:first-child):not(:last-child) { color: aqua; }
要是你确实想给“非第一个”和“非最后一个”的元素(也就是所有li)设置样式,那原来的代码其实是生效的,可能是其他CSS规则优先级更高覆盖了这个样式,你可以检查一下是否有更具体的选择器,或者临时加!important测试(不推荐长期使用)。
内容的提问来源于stack exchange,提问作者Максим
相关产品推荐
相关产品推荐

