De tutorial van vandaag laat je onder de indruk dat je zo weinig code hebt geschreven om zo'n heerlijke animatie te maken. DrawSVG door de ongelooflijk slimme groep bij GreenSock stelt u in staat om geleidelijk de slag van een SVG te onthullen (of te verbergen). Laten we eens kijken hoe dat werkt door een geanimeerde preloader te bouwen.
Zoals vermeld, biedt de DrawSVG-plug-in u de mogelijkheid om de slag van een SVG te onthullen (of te verbergen), maar deze kan ook worden geanimeerd buitenwaarts vanuit het midden van een streek (of een positie / segment). Dit is precies wat we zullen doen in de komende oefening.
DrawSVG maakt deel uit van het GreenSock Animation Platform (GSAP) en kan worden gebruikt in elke TweenLite-, TweenMax-, TimelineLite- of TimelineMax-animatie. Alle populaire functies binnen GSAP (runtime-besturingselementen, callbacks, eases, overschrijfbeheer, nesten) werken ook met uw mooie SVG-animaties! *vuist hobbel *
Toegang tot de DrawSVGPlugin plus documentatie en ondersteuning vereist een Club GreenSock-lidmaatschap. Op het moment van schrijven variëren de plannen van $ 50 tot $ 150 per jaar, afhankelijk van het lidmaatschapstype.
Er is een speciale, volledig functionele versie van de DrawSVGPlugin gekoppeld vanuit de DrawSVGPlugin Codepens van GreenSock, dus voel je vrij om ze te vorken, voeg je eigen SVG-afbeeldingen toe en neem DrawSVGPlugin voor een draai.
Notitie: de speciale versie van de plug-in werkt alleen op het CodePen-domein.
De onderstaande code vertegenwoordigt alles wat we nodig hebben om deze SVG-lader te laten werken!
Je vindt de demo terug in elke browser die SVG ondersteunt (behoorlijk stevige ondersteuning als je IE8 en eerder negeert). U kunt ook de volledige Filler Loader-demo bekijken op CodePen.
Dit zijn de markeringen die we nodig hebben:
Binnen onze index.html
leeft een single tag die een bevat
label. Verbonden met
zijn twee attributen die helpen bij de positionering binnen het selectiekader (het zwarte vierkant). Deze twee attributen zijn cx
en cy
en plaats de cirkel binnen de Viewbox
van de element.
U kunt zien hoe dit systeem werkt in de afbeelding die volgt. Het eerste frame van de serie vertegenwoordigt ons
zonder enige attributen voegt het tweede frame toe cx = "50"
en tenslotte voegt het laatste frame toe cy = "50"
. De x en y van deze kenmerken verwijzen naar het cartesiaanse coördinatensysteem dat onze vorm positioneert op het bijbehorende horizontale en verticale vlak.
Het laatste attribuut (r
) van cirkel
bepaalt de straal van onze cirkel of, met andere woorden, de lengte van het midden van de cirkel tot de rand van de doos. Voel je vrij om die waarde aan te passen in mijn CodePen-demo om de resultaten te zien als de waarde wordt gewijzigd.
Nu voor sommige stijlen.
.vulmachine-loader hoogte: 32px; breedte: 32px; transformeren: roteren (-90deg); .fill-path fill: none; beroerte: wit; stroke-linecap: butt; streekbreedte: 8px;
Dit specifieke voorbeeld heeft een minimale styling. We definiëren een aantal beperkingen zoals breedte
en hoogte
(32 x 32), dan is de .fill-path
class is wat ons pad zijn uiterlijk geeft door een paar SVG-eigenschappen beschikbaar te stellen voor ons in CSS-land. We geven het pad een eindtype van breedte, kleur en lijn. Het eindtype voor deze demo is ingesteld op mikpunt
en vierkanten volledig de eindpunten van het pad.
Nu kunnen we de cirkel draaien -90deg
(tegen de klok in). U kunt zien waarom op basis van de onderstaande schermafbeeldingen hieronder. Het linker beeld toont de cirkel vóór onze rotatie en de tweede afbeelding toont de cirkel na onze rotatie.
Nu om dingen te laten werken.
var loader = new TimelineMax (repeat: -1), fill_path = $ ('. fill-path'), fill_duration = 1.2, fill_position = '+ =. 25'; // plaats tween 0,25 seconden na einde van init tween loader.fromTo (fill_path, fill_duration, drawSVG: '0', drawSVG: '100%', fill_position) .to (fill_path, fill_duration, drawSVG: '100 % 100% ', fill_position);
Als u de TimelineMax-oproep nog nooit hebt gezien, hoeft u niet bang te zijn. U kunt hier meer over lezen voordat u verder gaat.
Denk aan TimelineMax als een tijdlijn waar we onze frames aan zullen toevoegen. In ons geval hebben we één enkele tijdlijn die een object met een bevat sleutel waarde
om het afspelen van de animatie te regelen. Het afspelen is ingesteld om te herhalen, vertegenwoordigd door de waarde -1
toegewezen aan de herhaling
sleutel van ons object TimelineMax-opties. Omdat we jQuery gebruiken voor DOM-ophalen, vangen we het pad op met behulp van de .fill-path
klasse als onze haak. Dit is de referentie die we gebruiken voor het pad terwijl we het beginnen te animeren.
De laatste overgebleven regels van onze JavaScript is waar de magie echt gebeurt. Het object dat bevat drawSVG
begint door onze padanimatie met de klok mee van leeg te starten (drawSVG: '0'
) gevuld (drawSVG: '100%'
). Nu we het pad in één richting hebben ingevuld, moeten we de vulling omkeren (tegen de klok in). Dit is waar onze naar()
methode komt binnen en waar we hebben ingesteld drawSVG
naar '100% 100%'
. Aangezien we onze fill-animatie voor 100% hebben beëindigd, moeten we de vulling nog eens 100% omkeren. Hiermee wordt de vulling geanimeerd van waar de streek zich momenteel bevindt naar een staat waar de streek langs het pad bestaat. Altviool!
Zoals we hebben gezien is DrawSVG extreem licht van gewicht en snel in te stellen waardoor het maken van padanimaties voor SVG erg leuk is om te maken, zelfs voor de beginnende ontwikkelaar. Met heel weinig config kunnen we een ander arsenaal naar ons volgende project brengen, interacties maken en heerlijk ervaren.
Als u vragen hebt, kunt u het gerust stellen in de opmerkingen hieronder. Blij geanimeerd!