用复选框切换 svg 圆圈颜色
Posted
技术标签:
【中文标题】用复选框切换 svg 圆圈颜色【英文标题】:toggle svg circle color with checkbox 【发布时间】:2021-12-30 15:30:05 【问题描述】:我想要一个切换按钮来改变 svg 的颜色,在这种情况下是一个圆圈。我可以制作一个复选框,纯粹在 html 和 CSS 中更改文本的颜色,但它不适用于 svg。
这是适用于文本的代码。
<label for="element-toggle">click me to toggle color</label>
<input id="element-toggle" type="checkbox" />
<div id="toggled-element">My color will be toggled</div>
label[for=element-toggle]
cursor: pointer;
color: blue;
#toggled-element
color: green;
#element-toggle:checked ~ #toggled-element
color: red;
这是我尝试使用相同的逻辑来更改 svg 圆圈而不是文本的颜色(这不起作用)
<label for="element-toggle">click me to toggle color</label>
<input id="element-toggle" type="checkbox" />
<svg viewBox="0 0 40 30">
<circle id="toggled-element" cx="1" cy="1.2" r="1" />
</svg>
label[for=element-toggle]
cursor: pointer;
color: blue;
#toggled-element
fill: green;
#element-toggle:checked ~ #toggled-element
fill: red;
【问题讨论】:
【参考方案1】:错误的元素被定位...
我将id="toggled-element"
切换为svg
而不是circle
来演示。
这个#element-toggle:checked~#toggled-element
实际上是通过general sibling combinator 选择svg
。
label[for=element-toggle]
cursor: pointer;
color: blue;
#toggled-element
fill: green;
#element-toggle:checked~#toggled-element
fill: red;
<label for="element-toggle">click me to toggle color</label>
<input id="element-toggle" type="checkbox" />
<svg viewBox="0 0 40 30" id="toggled-element">
<circle cx="1" cy="1.2" r="1" />
</svg>
【讨论】:
【参考方案2】:1) 可以直接选择svg
,用green
填充颜色为:
svg
fill: green;
2) 您必须使用fill
将svg
中的颜色填充为:
#element-toggle:checked ~ svg
fill: red;
label[for=element-toggle]
cursor: pointer;
color: blue;
svg
fill: green;
#element-toggle:checked ~ svg
fill: red;
<label for="element-toggle">click me to toggle color</label>
<input id="element-toggle" type="checkbox" />
<svg viewBox="0 0 40 30">
<circle id="toggled-element" cx="1" cy="1.2" r="1" />
</svg>
【讨论】:
以上是关于用复选框切换 svg 圆圈颜色的主要内容,如果未能解决你的问题,请参考以下文章
求指教怎么用Jqueryeasyui编写出单选框就是选项前有个圆圈的那种
HTML ionic 中 checkbox 的复选框 用css 如何改变外框的颜色
form的编辑与展示的切换(输入框,单选多选框,上传图片,颜色选择器)适用个人信息的展示与修改
form的编辑与展示的切换(输入框,单选多选框,上传图片,颜色选择器)适用个人信息的展示与修改