Az ötlet az, hogy SVG ikont használjon egy gombban, és cserélje ki az ikont egy másikra, amikor a gombra kattint. Egy gombnyomásra gyakran azt jelzi, hogy valamilyen műveletet hajtottak végre, ezért az ikonok váltása jó felhasználói felület érintés lehet, amely megmutatja a változást a kontextusban, és megerősíti, hogy a művelet megtörtént.
Lehetséges felhasználási eset lehet a letöltés gomb. A gombban lévő ikon eredetileg azt jelezheti, hogy a gomb elindítja a letöltést, de pipára vált, amikor a gombra kattintottak.
Lásd a Pen MorphSVG in Button on Click elemet, Geoff Graham (@geoffgraham) a CodePen-en.
Hozzunk létre egy részletet, amely megvalósítja ezt a mintát, hogy felhasználhassuk más hasonló összefüggésekben is.
Követelmények
Miközben ezt SVG-kódrészletként nyújtjuk be, a GSAP TweenMax-jára fogunk támaszkodni, amely egy kifejezetten az SVG animálására szolgáló JavaScript-könyvtár, és a MorphSVG-re, amely a TweenMax egyik alkotóeleme.
Igen, az SVG valóban támogatja az animációkat, amelyek lehetővé teszik számunkra, hogy ugyanezt megvalósítsuk. Mivel azonban a WebKit és a Blink böngészők jövőbeni verzióiban csökken a SMIL támogatása, és az IE és az Edge támogatásának hiánya miatt a GSAP sokkal vonzóbb alternatívává válik.
Gyújtsuk fel ezeket, és építsünk nekünk egy mintát!
1. lépés: Válassza ki az SVG alakzatokat
Az egyik alakot kicseréljük egy másikra. Az ehhez a részlethez használt alakzatok az IcoMoon-tól származnak, amely rengeteg ingyenes vektoros ikonnal rendelkezik, de saját maga is elkészítheti. Akárhogy is, készítse elő az alakjait, és adjuk hozzá őket egy gombelem belső HTML-jéhez.
Download
2. lépés: Stílusolja ki a gombot és az SVG-t
Legközelebb beállíthatjuk a CSS-t. A példánkban szereplő stílusok többsége a demóra jellemző. Itt van a minimum, ami szükséges ahhoz, hogy ez a funkció működjön.
Ne feledje, hogy a kulcsdarab elrejti azt az alakzatot, amelybe alapértelmezés szerint morfondírozunk. Ezt azért tesszük, mert a DOM-ban mindkét alakra szükségünk van ahhoz, hogy a MorphSVG felcserélje az egyiket a másikra, de nem tudjuk egyszerre mindkettőt megjeleníteni. Ez azt jelenti, hogy elrejtjük a második alakzatot, és hagyjuk, hogy a MorphSVG csodáit tegye lehetővé, hogy látható legyen, amikor arra szükség van.
/* The main SVG */ .button-icons ( width: 1.25em; ) /* The individual icons */ .icon ( fill: #fff; ) /* We hide the checkmark by default */ #checkmark ( visibility: hidden; )
3. lépés: Mighty Morphin 'SVG-k!
Itt játszik szerepet a TweenMax és a MorphSVG. A példa teljes kódját az alábbiakban adjuk meg, de ez az általános szkriptet követi:
- Definiáljon néhány változót az induláshoz, hogy hivatkozhassunk rájuk a kódban, anélkül, hogy minden egyes esetben ki kellene írnunk őket:
icons
: a teljes SVG elembutton
: az a gomb (vagy link), amely az alakjainkat tartalmazzabuttonText
: a gombon belüli szövegbuttonTL
: A MorphSVG parancs a letöltés ikon cseréjére a pipa ikonra- Hé, JavaScript, kérjük, figyelje a gombra kattintást, és játssza le a MorphSVG animációt előre és hátra alternatív kattintások esetén.
- Ja és hé, JavaScript, cserélje ki a gomb szövegét is, amikor a gombra kattint.
- Köszönöm, JavaScript
// We're going to select some things and make them variables var select = function(s) ( return document.querySelector(s); ), icons = select('#icons'), button = select('.button'), buttonText = document.getElementById("button-text") // Morph the Download icon into the Checkmark icon var buttonTl = new TimelineMax((paused:true)); buttonTl.to('#download', 1, ( morphSVG:(shape:'#checkmark'), ease:Elastic.easeInOut )) // On button click, play the animation button.addEventListener('click', function() ( if (buttonTl.time() > 0) ( buttonTl.reverse(); ) else ( buttonTl.play(0); ) )) // On button click, swap out the button text button.addEventListener('click', function() ( if (button.classList.contains("saved")) ( button.classList.remove("saved"); buttonText.innerHTML = "Download"; ) else ( button.classList.add("saved"); buttonText.innerHTML = "Saved!"; ) ), false);
Demó
Az alábbiakban bemutatjuk a lefedett kódot:
Lásd a Pen MorphSVG in Button on Click elemet, Geoff Graham (@geoffgraham) a CodePen-en.
Hivatkozások
- GreenSock MorphSVG: Dokumentáció a plugin használatához.
- Hogyan működik az SVG Shape Morphing: Chris ugyanezt a koncepciót tette közzé a SMIL segítségével, és szép alapot adott ehhez a mintához.
- Boldog / szomorú toll: Chris Gannon bemutatója, amely segített elkészíteni az animációt ehhez a mintához.