Az SVG animálása kissé egyedülálló abban a tekintetben, hogy három különféle módon lehet megközelíteni az animációt.
1. Animáció CSS @ kulcskeretekkel
Az SVG elemek megcélozhatók és stílusozhatók CSS-sel. Vagyis animációt alkalmazhat a @keyframes segítségével. Mint ez:
.left-leg ( fill: orange; animation: dance 2s infinite alternate; ) @keyframes dance ( 100% ( transform: rotate(3deg); ) )
Választhatja ezt az animációt, ha…
- Az animáció meglehetősen egyszerű.
- Csak azokat a tulajdonságokat kell animálnia, amelyeket a CSS képes animálni.
- Már ismeri és jól érzi magát a CSS animációkkal.
2. Animáció a SMIL segítségével
Van egy szintaxis az SVG-be beépített animációk számára. Íme egy nagyon egyszerű példa:
Itt van egy nagy bemutató a SMIL-ről.
Választhatja ezt az animációt, ha…
- Olyan tulajdonságokat kell animálnia, amelyekre a CSS nem képes, mint például maga az alakzat.
- Szüksége van további SMIL-funkciókra, például egy animáció megkezdésére, amikor egy másik befejeződik az időtartamok / késések kézi szinkronizálása nélkül. Vagy interakciós dolgok, például animáció indítása egy kattintásra.
3. Animáció JavaScript használatával
A JavaScript használatával hozzáférhet olyan dolgokhoz, mint a requestAnimationFrame (vagy más hurkok), így animálhat csak a gyorsan változó tulajdonságértékek segítségével. Vannak olyan keretek is az SVG-vel való együttműködéshez, amelyekbe általában animációs dolgok vannak beépítve. Vagy animációs keretek, amelyek együttműködnek az SVG-vel. Mint a SnapSVG, a GreenSock, az SVG.js vagy a Velocity.js.
Íme egy példa a SnapSVG-re:
var s = Snap("#robot"); var leftPupil = s.select("#left-pupil"); leftPupil.animate(( r: 50, fill: "lightgreen" ), 1000);
Választhatja ezt az animációt, ha…
- Egyébként a JavaScript-en dolgozik, talán az animációja a JSON-nal vagy hasonlóval kapott adatokhoz kapcsolódik.
- Amúgy szüksége van a JavaScript-re, mert szüksége van a logikára vagy a matematikára, vagy valami másra, ami valóban csak ott lehetséges.
- Érdekli, hogy a JavaScript megoldjon néhány hibát az Ön számára.
- Az animáció hatóköre meglehetősen nagy / bonyolult, és szükség van az absztrakcióra és a JavaScript által biztosított szervezésre.
Demó
Lásd Chris Coyier (@chriscoyier) tollának három módja az SVG animálására a CodePen-en.
Nem befolyásolja-e a lehetőségeit az, hogy végül hogyan használja az SVG-t?
Igen. Ha SVG-as- t használ , akkor nem használhatja egy másik stíluslap CSS-animációit. De Ön SMIL. Az animációk működni fognak bizonyos böngészőkben (az írás idején a Chrome igen, a Firefox nem). Nem lennék meglepve, ha az SVG fájlokba beágyazott CSS működne vagy működni fog egyszer. JavaScript, valószínűleg nem.
Ha az SVG-t CSS háttérképben használja, akkor elképzelhető, hogy hasonló történet, mint a fentiekben.
Ha inline-t használ , minden lehetőség nyitva áll előtted.
Ha az SVG-t egy object
vagy -on keresztül használja iframe
, akkor a szkripteket / stílusokat közvetlenül be kell ágyaznia az SVG-be, hogy működjön.