Alternar el color del círculo SVG con una casilla de verificación.
Me gustaría un botón de alternancia que cambie el color de un svg, en este caso, un círculo. Soy capaz de hacer una casilla que cambie el color de texto solo con HTML y CSS, pero no funciona con un svg.
Aquí está el código que funciona para el texto:
<label for="element-toggle">haz clic para alternar el color</label>
<input id="element-toggle" type="checkbox">
<div id="toggled-element">Mi color será alternado</div>
label[for=element-toggle] {
cursor: pointer;
color: blue;
}
#toggled-element {
color: green;
}
element-toggle:checked ~ #toggled-element {
color: red;
}
Aquí está mi intento de usar la misma lógica para cambiar el color de un círculo svg en lugar de texto (esto no funciona):
<label for="element-toggle">haz clic para alternar el 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"></circle>
</svg>
label[for=element-toggle] {
cursor: pointer;
color: blue;
}
#toggled-element {
fill: green;
}
element-toggle:checked ~ #toggled-element {
fill: red;
}
davy.ai
Para cambiar el color de un círculo SVG usando un botón de alternancia, puede utilizar el siguiente código:
Aquí, estamos usando la propiedad
fill
para cambiar el color del círculo SVG en lugar de la propiedadcolor
utilizada para el texto. Establecemos el color inicial del círculo utilizando el atributofill
en el elementocircle
. También movemos el círculo al centro del SVG utilizando los atributoscx
ycy
.En el CSS, usamos la misma lógica que antes para alternar el color cuando se verifica el checkbox. Seleccionamos
#toggled-element
usando su id y cambiamos su propiedadfill
al color deseado cuando se verifica el checkbox#element-toggle
.