点击checkbox修改SVG形状填充色,checkbox被div包裹后失效如何解决
问题根因
你用到的~是CSS后续兄弟选择器,仅能匹配同一父元素下、位于当前元素之后的同级节点。
在你调整后的HTML结构中:
.toggler是#circ-toggle的子元素#circles是#circ-toggle的同级兄弟节点,和.toggler不在同一个父层级下
因此原来的#circ-toggle .toggler:checked~#circles .circ1选择器无法匹配到任何元素,样式不生效。
解决方法
使用CSS :has() 选择器,判断#circ-toggle下是否有被选中的.toggler,再匹配它的后续兄弟节点#circles即可,修改后的CSS如下:
#circles { fill: #00ffff; } /* 选择包含选中态.toggler的#circ-toggle,再匹配它的同级兄弟#circles */ #circ-toggle:has(.toggler:checked) ~ #circles .circ1 { fill: #000000; fill-opacity: 0.3; }
注::has()选择器目前已经被Chrome 105+、Firefox 121+、Safari 15.4+等主流浏览器支持,覆盖绝大多数用户场景。
内容的提问来源于stack exchange,提问作者Galgenstrick
相关产品推荐
相关产品推荐

