Táto vlastnosť začala život ako motion-path
. Toto a všetky ďalšie súvisiace vlastnosti motion- * sa v spec. Premenujú na offset- *. Meníme mená tu v almanachu. Ak ju chcete použiť práve teraz, pravdepodobne bude najlepšie použiť obidve syntaxe.
offset-path
Vlastnosť CSS definuje pohybová cesta pre prvok nasledovať počas animácie. Tu je príklad použitia syntaxe cesty SVG:
.thing-that-moves ( /* "Old" syntax. Available in Blink browsers as of ~October 2015 */ motion-path: path("M 5 5 m -4, 0 a 4,4 0 1,0 8,0 a 4,4 0 1,0 -8,0"); /* Currently spec'd syntax. Should be in stable Chrome as of ~December 2016 */ offset-path: path("M 5 5 m -4, 0 a 4,4 0 1,0 8,0 a 4,4 0 1,0 -8,0"); )
Túto vlastnosť nemožno animovať, skôr definuje cestu pre animáciu. motion-offset
Vlastnosť používame na vytvorenie animácie. Tu je jednoduchý príklad animácie posunutia pohybu pomocou animácie @keyframes:
.thing-that-moves ( offset-path: path('M 5 5 m -4, 0 a 4,4 0 1,0 8,0 a 4,4 0 1,0 -8,0'); animation: move 3s linear infinite; ) @keyframes move ( 100% ( motion-offset: 100%; /* Old */ offset-distance: 100%; /* New */ ) )
Pozrite si jednoduchý príklad pera animácie pozdĺž cesty pomocou CSS-Tricks (@ css-tricks) na CodePen.
V tejto ukážke sa oranžový kruh animuje pozdĺž toho, čo offset-path
sme nastavili v CSS. Túto cestu sme v skutočnosti nakreslili do SVG s úplne rovnakými path()
údajmi, ale na získanie pohybu to nie je potrebné.
Povedzme, že sme v nejakom softvéri na úpravu SVG nakreslili funky cestu, ako je táto:


Našli by sme cestu ako:
O d
hodnotu atribútu sa chystáme, a môžeme ho presunúť priamo do CSS a použiť ho ako offset-path
:
Prezrite si pero zEpLRo od CSS-Tricks (@ css-tricks) na stránkach CodePen.
Poznamenajte si hodnoty bez jednotky v syntaxi cesty. Ak aplikujete CSS na prvok v SVG, tieto hodnoty súradníc použijú súradnicový systém nastavený v týchto SVG viewBox
. Ak použijete pohyb na iný prvok HTML, budú týmito hodnotami pixely.
Tiež sme si všimli, že sme použili grafiku ukazovania prstom, aby sme ukázali, ako sa prvok automaticky otáča tak, aby smeroval dopredu. Môžete to ovládať pomocou offset-rotate
:
.mover ( offset-rotate: auto; /* default, faces forward */ offset-rotate: reverse; /* faces backward */ offset-rotate: 30deg; /* set angle */ offset-rotate: auto 30deg; /* combine auto behavior with a set rotation */ )
Hodnoty
Najlepšie, ako vieme, path()
a none
sú jedinými pracovnými hodnotami pre offset-path
.
Toto offset-path
ubytovacie zariadenie akceptuje všetky nasledujúce hodnoty.
path()
: Určuje cestu v syntaxi súradníc SVGurl
: Odkazuje na ID prvku SVG, ktorý sa má použiť ako dráha pohybubasic-shape
: Určuje tvar v súlade so špecifikáciou Tvary CSS, ktorá obsahuje:circle()
ellipse()
inset()
polygon()
Clippy je mimochodom úžasný nástroj na generovanie hodnôt základného tvaru.
none
: Neuvádza vôbec žiadnu dráhu pohybu
Tu je niekoľko testov:
Pozrite si test hodnôt dráhy pohybu pera od CSS-Tricks (@ css-tricks) na CodePen.
url()
Zdá sa, že nefunguje ani to, keď poviete prvku SVG, aby odkazoval na cestu definovanú tým istým SVG .
S API pre webové animácie
Dan Wilson niečo z toho preskúmal v dokumente Future Use: CSS Motion Paths. Ku všetkým rovnakým veciam v JavaScripte máte prístup prostredníctvom rozhrania Web Animations API. Povedzme napríklad, že ste definovali offset-path
znak CSS, napriek tomu môžete animáciu ovládať pomocou kódu JavaScript:
Prezrite si pero CSS MotionPath od CSS-Tricks (@ css-tricks) na CodePen.
Ďalšie príklady
Hlavy hore! Mnoho z nich bolo vytvorených pred zmenou z motion- * pomenovania na offset- *. Malo by byť celkom ľahké ich opraviť, ak máte taký sklon.
Pozri Pen Whoosh! autor: Merih Akar (@merih) na stránke CodePen.
Prezrite si pero pJarJO od Erica Willigersa (@ericwilligers) na stránke CodePen.
Prezrite si auto s scalextrickom perom na pohybovej dráhe od Ksesa (@Kseso) na CodePen.
Prezrite si lietadlo Pen CSS Motion Path Airplane od Ali Kleina (@AliKlein) na stránkach CodePen.
Prezrite si Pen CSS Animate na ceste SVG od 一丝 (@yisi) na CodePen.
Prezrite si Pen Motion Path Infinity od Dana Wilsona (@danwilson) na stránkach CodePen.
Pozrite si špirálu Pen CSS Motion Path Spiral od Dana Wilsona (@danwilson) na stránkach CodePen.
Pozrite si pero zGzJYd od 一丝 (@yisi) na CodePen.
Podpora prehliadača
Táto offset-path
vlastnosť sa v čase písania tohto článku stále považuje za experimentálnu funkciu. Ak vás súčasná nedostatočná podpora prehľadávačov váha s použitím v projekte, možno budete chcieť zvážiť použitie GSAP pre túto úroveň animácie, ktorej sa Sarah venuje aj vo svojom príspevku. Takto získate najširšiu podporu prehľadávača v súčasnosti.
Údaje o podpore tohto prehľadávača sú od spoločnosti Caniuse, ktorá obsahuje viac podrobností. Číslo označuje, že prehliadač podporuje túto funkciu v danej verzii alebo vyššej.
Desktop
Chrome | Firefox | IE | Hrana | Safari |
---|---|---|---|---|
46 | 72 | Nie | 79 | Nie |
Mobil / tablet
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
88 | 85 | 81 | Nie |
Od prehliadačov Chrome 46 a Opera 33 (a súvisiacich mobilných verzií) máme v aplikácii Blink „počiatočnú podporu“ (bez príznaku).
Existuje iný spôsob, ako to urobiť?
Naša vlastná Sarah Drasner písala o SMIL, natívnej metóde animácie SVG, a o tom, ako animateMotion
sa používa na animáciu objektov pozdĺž cesty SVG. Vyzerá to ako:
Podpora SMIL je však zastaraná! Toto sa teda neodporúča.
GreenSock je však iný spôsob, ktorý sa odporúča. Sarah o tom hovorí v GSAP + SVG pre pokročilých používateľov: pohyb po ceste (SVG sa nevyžaduje). Príklad:
Prezrite si ukážku pera pre automatickú rotáciu true / false od Sarah Drasner (@sdras) na CodePen.
Ďalšie informácie
- Spec: Spec
- Zbierka príkladov na CodePen
- Budúce použitie: Cesty pohybu CSS od Dana Wilsona
- Cesty pohybu - minulosť, súčasnosť a budúcnosť, Cassie Evans
- WebKit lístok # 139128
- Vstupenka Mozilla # 1186329
- Žiadosť o funkciu Microsoft Edge
- Stav platformy Chrome: Cesta pohybu CSS a ukážka
- MDN: motion (odkazy na ďalšie súvisiace vlastnosti)