Größenänderung SVG Kreisradius Mithilfe von CSS-Animation
Ich versuche zu animieren, einen SVG-Kreis-radius-Attribut mit CSS. Während (mit dem Firefox-Element Untersuchen-tool) kann ich sehen, dass die animation selbst eingerichtet ist und ordnungsgemäß ausgeführt wird, die Größe der ".innerCircle" nicht sichtbar verändern.
Wenn Sie Sie vor Ort alles, was ich habe offensichtlich verpasst, oder Hilfe in irgendeiner Art wäre ich sehr dankbar. Ich bin ziemlich neu hier, also wenn ich gegangen über dies falsch ist, bitte freundlich sein!
Habe ich eingefügt, meine Dateien unterhalb der Referenz.
Nochmals vielen Dank.
styling.css:
@keyframes buttonTransition {
from {
r: 5%;
}
to {
r: 25%;
}
}
.innerCircle {
animation-duration: 1s;
animation-iteration-count: infinite;
animation-name: buttonTransition;
}
index.html:
<html>
<head>
<link href = "styling.css" rel = "stylesheet" type = "text/css"></link>
</head>
<body>
<svg class = "button" expanded = "true" height = "100px" width = "100px">
<circle cx = "50%" cy = "50%" r = "35%" stroke = "#000000" stroke-width = "10%" fill = "none"/>
<circle class = "innerCircle" cx = "50%" cy = "50%" r = "25%" fill = "#000000"/>
</svg>
</body>
</html>
Du musst angemeldet sein, um einen Kommentar abzugeben.
In SVG 1.1 der radius eines Kreises ist ein Attribut und nicht ein CSS-Eigenschaft.
CSS-Animationen animieren von CSS-Eigenschaften und-nicht animiert-Attribute.
Das ist im Grunde Ihr problem, so dass Sie nicht mit CSS Animationen zu arbeiten, die auf Attribute, auf Firefox oder Safari aktuell. Wenn Sie möchten, gewählt, eine CSS-Eigenschaft wie opacity, fill oder stroke, du würdest in Ordnung.
SMIL-Animationen funktionieren auf Attribute (und die CSS-Eigenschaften) auf diesen UAs-obwohl.
HTML:
Es ist eine Lösung in Sicht, obwohl für die kommende unfertig SVG 2-Spezifikation schlägt vor, dass die meisten Attribute werden CSS-Eigenschaften (vor allem, weil Anwendungsfälle wie deins funktioniert nicht). Chrome implementiert hat, wird dies bereits, um zu überprüfen, ob Ihre möglich, die ist, warum Ihre animation funktioniert es. Irgendwann in der Zukunft dann, Firefox und Safari zu implementieren, die das SVG-2-Funktion zu.
Gibt es eine einfache alternative: animate-element scale-statt des Kreis-radius.
SMIL-Animationen ist veraltet und wird nur unterstützt von den Browsern für legacy-Gründen. Es kann gelöscht werden, in der Zukunft und wird nie erscheinen, im Rand oder einige zukünftige Browser.
CSS:
HTML:
Falls jemand noch auf der Suche, wie dies zu tun, fand ich eine ziemlich gute Lösung für einen gefüllten Kreis ohne Verwendung von SMIL. Diese Lösung ist ein bisschen ein hack und es funktioniert nur für Kreise, die eine Feste Füllung in Ihnen. Im wesentlichen, was ich Tat, war zu animieren, die Strichstärke der Kreise zu erscheinen, als ob Sie wachsen.
Meine ursprüngliche Kreis
Für diese Arbeit habe ich den radius des Kreises zu sein, nahe sein, nahe 0.
Dann einen Schlaganfall-Breite die doppelte Höhe des ursprünglichen radius, und schließlich-setup die animation von stroke-width.