CSS3 animacijačini web stranice dinamičnim. Oživljava web stranice, poboljšavajući korisničko iskustvo. Za razliku od CSS3 prelaza, kreiranje animacije se zasniva na ključnim kadrovima, koji vam omogućavaju da automatski reprodukujete i ponavljate efekte za određeno vreme, kao i da zaustavite animaciju unutar petlje.
CSS3 animacija se može primeniti na skoro sve html elemente, kao i na pseudoelemente :before i :after. Spisak animiranih svojstava je dat na stranici. Prilikom kreiranja animacije ne smijete zaboraviti na moguće probleme s performansama, jer promjena nekih svojstava zahtijeva mnogo resursa.
Uvod u CSS animaciju
Podrška za pretraživač
IE: 10.0
Firefox: 16.0, 5.0 -moz-
Chrome: 43.0, 4.0 -webkit-
safari: 4.0 -webkit-
opera: 12.1, 12.0 -o-
iOS Safari: 9, 7.1 -webkit-
Opera Mini: —
Android pretraživač: 44, 4.1 -webkit-
Chrome za Android: 44
1. @keyframes pravilo
Kreiranje animacije počinje instalacijom ključno osoblje@keyframes pravila. Okviri određuju koja svojstva će biti animirana u kom koraku. Svaki okvir može uključivati jedan ili više blokova deklaracije jednog ili više parova svojstava i vrijednosti. Pravilo @keyframes sadrži ime animacije elementa, koje povezuje pravilo i blok deklaracije elementa.
@keyframes sjena ( od (sjena teksta: 0 0 3px crna;) 50% (sjena teksta: 0 0 30px crna;) do (sjena teksta: 0 0 3px crna;) )
Ključni okviri se kreiraju pomoću ključnih riječi od i do (ekvivalentno 0% i 100%) ili procentualnim poenima, koji se mogu postaviti na bilo koji broj. Također možete kombinirati ključne riječi i procentne poene. Ako okviri imaju ista svojstva i vrijednosti, mogu se kombinirati u jednu deklaraciju:
@ključni okviri se pomeraju ( od, do (gore: 0; lijevo: 0; ) 25%, 75% (gore: 100%;) 50% (gore: 50%;) )
Ako okviri od 0% ili 100% nisu specificirani, tada ih korisnikov pretraživač kreira koristeći izračunate (originalno postavljene) vrijednosti svojstva koje se animira. Ako dva ključna okvira imaju iste selektore, sljedeći će nadjačati prethodni.
Nakon deklariranja pravila @keyframes, možemo se pozvati na njega u svojstvu animacije:
H1 (veličina fonta: 3,5 em; boja: tamnomagenta; animacija: sjena 2s beskonačno jednostavno izlazak; )
Ne preporučuje se animiranje nenumeričkih vrijednosti (uz rijetke izuzetke), jer rezultat u pregledniku može biti nepredvidljiv. Također, nemojte postavljati vrijednosti svojstava ključnog kadra koje nemaju središnju tačku, kao što su vrijednosti svojstva boja: ružičasta i boja: #ffffff, širina: auto i širina: 100px, ili radijus granice: 0 i granica- radijus: 50% (u ovom slučaju bilo bi ispravno navesti radijus granice: 0%).
2. Ime animacije ime-animacije
Svojstvo specificira ime animacije. Ime animacije kreira se u pravilu @keyframes. Preporučuje se korištenje imena koje odražava suštinu animacije, a možete koristiti jednu ili više riječi povezanih razmakom - ili donjom crtom _ . Imovina se ne nasljeđuje.
Sintaksa
Div (ime-animacije: mymove;)
3. Trajanje animacije trajanje animacije
Svojstvo postavlja trajanje animacije, postavljeno u sekundama ili milisekundama, negativne vrijednosti nisu dozvoljene. Nije naslijeđen. Ako je za element postavljeno više od jedne animacije, možete postaviti različito vrijeme za svaku tako što ćete navesti vrijednosti odvojene zarezima.
Sintaksa
Div (trajanje animacije: 2 s;)
4. funkcija vremena animacije
Svojstvo određuje promjenu brzine od početka do kraja animacije koristeći funkcije vremena. Specificirano pomoću ključnih riječi ili Bezierove krive kubni-bezier(x1, y1, x2, y2) . Nije naslijeđen.
funkcija vremena animacije | |
---|---|
vrijednosti: | |
lakoća | Zadana funkcija, animacija počinje polako, brzo se ubrzava i usporava na kraju. Odgovara cubic-bezier(0.25,0.1,0.25,1) . |
linearno | Animacija se odvija ravnomjerno kroz cijelo vrijeme, bez fluktuacija u brzini. Odgovara cubic-bezier(0,0,1,1) . |
ease-in | Animacija počinje polako, a zatim se glatko ubrzava na kraju. Odgovara cubic-bezier(0.42,0,1,1) . |
ease-out | Animacija počinje brzo i polako se usporava na kraju. Odgovara cubic-bezier(0,0,0.58,1) . |
lakoća ulaska | Animacija počinje polako i polako se završava. Poklapa se s cubic-bezier(0.42,0,0.58,1) . |
cubicbezier(x1, y1, x2, y2) | Omogućava vam da ručno postavite vrijednosti od 0 do 1. Možete izgraditi bilo koju putanju brzine promjene animacije. |
korak start | Postavlja animaciju korak po korak, razbijajući animaciju na segmente, promjene se događaju na početku svakog koraka. Ekvivalentno koracima (1, početak) . |
step-end | Animacija korak po korak, promjene se događaju na kraju svakog koraka. Ekvivalentno koracima (1, kraj) . |
koraci(broj koraka,početak|kraj) | Funkcija vremena koraka koja uzima dva parametra. Broj koraka je dat kao pozitivan cijeli broj. Drugi parametar je opcioni i specificira tačku u kojoj počinje animacija. Sa vrijednošću početka, animacija počinje na početku svakog koraka, sa vrijednošću kraja, na kraju svakog koraka, sa zakašnjenjem. Kašnjenje se izračunava kao rezultat dijeljenja vremena animacije brojem koraka. Ako drugi parametar nije specificiran, koristi se kraj zadane vrijednosti. |
početni | Postavlja vrijednost svojstva na njegovu zadanu vrijednost. |
nasljediti | Nasljeđuje vrijednost svojstva od roditeljskog elementa. |
Sintaksa
Div (funkcija vremena animacije: linearna;)
Korak po korak animacija se može koristiti za stvaranje zanimljivih efekata, kao što je kucanje teksta ili indikator učitavanja.
5. Animacija sa kašnjenjem animacije
Svojstvo zanemaruje animaciju za određeno vrijeme, što omogućava pokretanje svake animacije pojedinačno. Negativno kašnjenje pokreće animaciju od određene tačke unutar njenog ciklusa, tj. od vremena navedenog u kašnjenju. Ovo vam omogućava da primijenite animaciju na više elemenata sa faznim pomakom, mijenjajući samo vrijeme kašnjenja.
Da bi animacija počela od sredine, trebate postaviti negativno kašnjenje jednako polovini vremena postavljenog u trajanju animacije. Nije naslijeđen.
Sintaksa
Div (kašnjenje animacije: 2s;)
6. Animacija ponavljanje animacija-iteracija-broj
Svojstvo vam omogućava da pokrenete animaciju više puta. Vrijednost 0 ili bilo koji negativan broj uklanja animaciju iz reprodukcije. Nije naslijeđen.
Sintaksa
Div(animacija-iteracija-broj: 3;)
7. Smjer animacije animation-direction
Svojstvo specificira smjer u kojem će se animacija ponoviti. Ako se animacija ponavlja samo jednom, onda ovo svojstvo nema značenje. Nije naslijeđen.
Sintaksa
Div (režija animacije: alternativni;)
8. Kratko snimanje animacije
Sve opcije reprodukcije animacije mogu se kombinovati u jednom svojstvu - animacija, navodeći ih odvojenim razmakom:
Animacija: animacija-name animacija-trajanje animacija-vremenska-funkcija animacija-kašnjenje animacija-iteracija-broj animacija-smjer;
Za reproduciranje animacije dovoljno je navesti samo dva svojstva - naziv-animacije i trajanje-animacije, a ostala svojstva će uzeti svoje zadane vrijednosti. Redoslijed svojstava nije bitan, jedina stvar je da animation-duration mora doći prije animation-delay.
9. Reproduciraj animaciju-play-stanje
Svojstvo kontrolira reprodukciju i zaustavljanje animacije. Zaustavljanje animacije unutar petlje moguće je korištenjem ovog svojstva u JavaScript skripti. Također možete zaustaviti animaciju kada pređete mišem iznad objekta — state:hover . Nije naslijeđen.
Sintaksa
Div:hover (animation-play-state: paused;)
10. Stanje elementa prije i poslije animacije se reproducira animation-fill-mode
Svojstvo određuje redoslijed kojim se stilovi definirani u @keyframes primjenjuju na objekt. Nije naslijeđen.
animacija-fill-mode | |
---|---|
vrijednosti: | |
nijedan | Zadana vrijednost. Stanje elementa se ne mijenja prije ili nakon reproduciranja animacije. |
naprijed | Nakon što se animacija završi (kako je određeno vrijednosti broja iteracija animacije), animacija će primijeniti vrijednosti svojstva do trenutka kada se animacija završi. Ako je broj iteracija animacije veći od nule, primjenjuju se vrijednosti za kraj posljednje dovršene iteracije animacije (umjesto vrijednosti za početak sljedeće iteracije). Ako je broj iteracija animacije nula, primijenjene vrijednosti će biti one koje započinju prvu iteraciju (isto kao i način punjenja animacije: unatrag;). |
unazad | Za period naveden sa animation-delay , animacija će primijeniti vrijednosti svojstava definirane na ključnom kadru, koji će započeti prvu iteraciju animacije. To su ili od vrijednosti ključnih kadrova (kada je smjer animacije: normalan ili smjer animacije: alternativni) ili do vrijednosti ključnih kadrova (kada je smjer animacije: obrnuto ili smjer animacije: alternativni). |
CSS3 animacija se široko koristi. Vrijeme je da čak i najpočetnici graditelji web stranica shvate što je CSS animacija i kako je kreirati. Možda mislite da je CSS3 animacija pomicanje blokova i to je kao crtani film. Ali CSS animacija se ne odnosi samo na pomicanje elementa s jedne tačke na drugu, već i na izobličenje i druge transformacije. Da bi bilo jasno čak i početnicima, sve sam slikao korak po korak.
1. Osnovna svojstva CSS3 animacije
Mali teorijski blok iz kojeg ćete razumjeti koja su svojstva CSS3 odgovorna za animaciju, kao i koje vrijednosti mogu uzeti.
- naziv-animacije- jedinstveno ime za animaciju (ključni okviri, o njima ćemo malo kasnije).
- trajanje animacije— trajanje animacije u sekundama.
- funkcija vremena animacije— Kriva brzine animacije. Na prvi pogled je vrlo neshvatljivo. To je uvijek lakše prikazati na primjeru, a vidjet ćete ih u nastavku. Može imati sljedeće vrijednosti: linearno | lakoća | ease-in | ease-out | kubni-bezier(n,n,n,n) .
- animacija-kašnjenje— kašnjenje u sekundama prije početka animacije.
- broj iteracija animacije- broj ponavljanja animacije. Postavlja se ili kao jednostavan broj, ili možete odrediti beskonačno i animacija će se izvoditi neograničeno.
Evo samo osnovnih svojstava, koja su više nego dovoljna za kreiranje vaše prve CSS3 animacije.
Posljednja stvar koju trebamo znati i razumjeti iz teorije je kako kreirati ključne kadrove. Ovo je takođe lako učiniti i radi se pomoću pravila @keyframes, unutar kojeg su specificirani ključni kadrovi. Sintaksa za ovo pravilo je:
Iznad postavljamo prvi i posljednji okvir. Sva međustanja će se izračunati AUTOMATSKI!
2. Pravi primjer CSS3 animacije
Teorija je, kao i obično, dosadna i nije uvijek jasna. Mnogo je lakše sve vidjeti na stvarnom primjeru, ali najbolje je to učiniti sami na nekoj probnoj HTML stranici.
Kada uče programski jezik, obično napišu program "Zdravo, svijete!", pomoću kojeg možete razumjeti koju sintaksu ovaj jezik ima i neke druge osnovne stvari. Ali mi ne proučavamo programski jezik, već jezik za opisivanje izgleda dokumenta. Stoga ćemo imati svoj "Zdravo, svijete!".
Evo šta ćemo uraditi za primjer: daj nam blok Čini se da je sve jasno - samo trebate komprimirati blok Prvo, HTML oznake. Vrlo je jednostavno jer radimo samo s jednim elementom na stranici. A evo šta je u datoteci stila: Kao što vidite, specificirali smo samo prvi i posljednji ključni kadar, a svi srednji su "izgrađeni" automatski. Evo vaše prve CSS3 animacije. Da biste konsolidirali stečeno znanje, kreirajte HTML dokument i CSS datoteku i tamo umetnite (ili bolje ukucajte ručno) kod iz primjera. Tada ćete sigurno sve razumjeti. Zatim pokušajte učiniti isto s visinom bloka (trebalo bi se smanjiti u visinu) da biste usidrili materijal. Iznad ste naučili kako je lako kreirati CSS3 animacije. Ako ste pokušali sami to učiniti, već ste razumjeli cijeli proces i sada želite znati kako možete stvoriti složeniju i ljepšu animaciju. I zaista se može stvoriti. U nastavku se nalaze 3 lekcije u kojima se animacija kreira na isti način kao u gornjem primjeru. 3 lekcije CSS animacije (transformacije) Lekcije će vam pomoći da još bolje razumijete CSS animaciju. Glavna stvar je da pokušate ponoviti ono što vidite na lekcijama. Ili barem pokušajte promijeniti vrijednosti svojstava i vidjeti što će se dogoditi, tada ćete se manje bojati CSS-a. Nedavno smo to vidjeli tranzicije- To je samo način animacije svojstva stila iz početni prije final države. Dakle, tranzicije u CSS-u su specifično vrsta animacije, gdje: Ali šta ako želite: Animacija u CSS-u dozvoljava sve ovo i više. Animacija je poput mini filma u kojem vi kao režiser dajete uputstva (pravila stila) svojim glumcima (HTML elementi) za različite scene (ključne kadrove). Kao i tranzicija, svojstvo animacije je skraćeno za nekoliko drugih: Da biste animirali dugme za preuzimanje, možete napisati animaciju poskakivanje: @keyframes odskakanje( 0% ( dno: 0; box-shadow: 0 0 5px rgba(0,0,0,0.5); ) 100% (dole: 50px; box-shadow: 0 50px 50px rgba(0,0, 0,0.1); ) ) .dugme za učitavanje (animacija: odskakivanje 0,5s kubični-bezier(0.1,0.25,0.1,1) 0s beskonačno naizmjenično oba; ) Prvo moramo napisati stvarnu animaciju odbijanja koristeći @keyframes i imenovati je . koristio sam skraćeno svojstvo animacije i uključuje sve moguće opcije: Prije primjene animacije na HTML elemente, potrebno je pisati animaciju koristeći ključne kadrove. Općenito, ključni okviri su svaki međukorak u animaciji. Definiraju se korištenjem postotaka: Također možete koristiti ključne riječi od i do umjesto 0% odnosno 100%. Možete definirati onoliko ključnih kadrova koliko želite, na primjer 33%, 4% ili čak 29,86%. U praksi ćete napisati samo neke od njih. Svaki ključni kadar je css pravilo, što znači da možete pisati CSS svojstva kao i obično. Da biste definirali animaciju, jednostavno napišite ključnu riječ @keyframes uz nju ime: @ključni okviri oko (0% (lijevo: 0; gore: 0; ) 25% (lijevo: 240px; gore: 0; ) 50% (lijevo: 240px; gore: 140px; ) 75% (lijevo: 0; gore: 140px ; ) 100% (lijevo: 0; gore: 0; ) ) p (animacija: oko 4s linearno beskonačno; ) Imajte na umu da početni 0% i kraj 100% sadrže ista pravila CSS. Ovo osigurava da se animacija savršeno vrti. Pošto je brojač iteracija postavljen na beskonačno, animacija će ići od 0% do 100%, a zatim odmah nazad do 0% i tako u nedogled. Ime animacija se koristi barem dvaput: Poput imena CSS klasa, imena animacija mogu uključivati samo: Ime ne može početi brojem ili dvije crtice. Kao i trajanje prijelaza, trajanje animacije se može postaviti na sekundi(1s) ili milisekundi(200ms). Selektor (trajanje animacije: 0,5s; ) Zadana vrijednost je 0s što znači da uopće nema animacije. Slično funkcijama za mjerenje vremena za prijelaze, mogu se koristiti funkcije mjerenja vremena za animaciju ključne riječi, kao što je linear , ease-out , ili se može definirati sa proizvoljnim bezierove krive. Selektor (funkcija mjerenja vremena animacije: jednostavno ulazak; ) Zadana vrijednost: lakoća . Pošto animacija u CSS-u koristi ključne kadrove, možete postaviti linearno vremenska funkcija i simulirati specifičnu Bezierovu krivu definiranjem mnoge vrlo specifične ključni okviri. Pogledajte Bounce.js za vrhunske animacije. Kao i kod kašnjenja prijelaza, kašnjenje animacije se može postaviti na sekundi(1s) ili milisekundi(200ms). Zadana vrijednost je 0s što znači da nema nikakvog kašnjenja. Korisno kada uključujete više animacija serija. A, .b, .c (animacija: odskakanje 1s; ) .b (kašnjenje animacije: 0,25s; ) .c (kašnjenje animacije: 0,5s; ) Podrazumevano se reprodukuje samo animacija jednom(vrijednost 1). Možete postaviti tri vrste vrijednosti: Svojstvo smjera animacije definira kojim redosledom ključni kadrovi se čitaju. Ovo je lakše zamisliti ako je brojač iteracija animacije postavljen na beskonačno. Svojstvo animation-fill-mode određuje šta će se dogoditi front početak animacije i poslije njegov završetak. Prilikom utvrđivanja ključno osoblje možete odrediti css pravila, koji će se primjenjivati u različitim koracima animacije. Sada ova CSS pravila mogu lice sa onima koji već primijenjen na animirane elemente. animation-fill-mode vam omogućava da kažete pretraživaču da li stilovi animacije takođe treba primijeniti izvan animacije. Hajde da zamislimo dugme, koji je: Pozdrav dragi čitaoci. Ovog dana, hajde da pričamo o prilično zanimljivoj stvari kao što je CSS animacija. Odnosno, ova animacija elemenata se radi samo uz pomoć stilova i ovdje se ne koriste skripte. Kao što vidite, ovdje postoji atribut :hover, koji mijenja stil pozadine pri lebdenju, u nekim primjerima bi trebao biti obavezan. padding: 10px uvlaka teksta: 0px; #box1 :hover { Kao što vidite, takvu animaciju smo postigli koristeći atribut tranzicija. Ovdje možete promijeniti brzinu animacije u sekundama, u ovom slučaju potrebno je 0,8s dok se boja potpuno ne promijeni pri lebdenju i 0,1s prije nego što se animacija pokrene nakon lebdenja i uklanjanja kursora. (Izvinite zbog zagonetke :-)) Ova vrijednost se može promijeniti po potrebi. Boja pozadine pri lebdenju je postavljena atributom :hover, ovdje je obavezno, inače animacija neće raditi. padding: 10px uvlaka teksta: 0px; #box2 :hover { U ovom primjeru, postigli smo glatku promjenu veličine bloka pri lebdenju. Zadana vrijednost je 200 x 100, a vrijednost lebdenja je 150 x 50, što je postavljeno atributom :hover. Ovdje također možete promijeniti blok samo po širini ili visini, samo trebate :hover izbrisati širina:- blok se mijenja samo po visini, visina:— blok se mijenja samo po širini. Također možete promijeniti stopu promjene. U ovom slučaju to je 1s. padding: 10px uvlaka teksta: 0px; #box3:hover( Zaokret je gotov sa transformirati I tranzicija. U ovom slučaju, objekt se okreće u smjeru kazaljke na satu za 360 stupnjeva brzinom od jedne sekunde. Ako želite da se blok okreće suprotno od kazaljke na satu, transformirati vrijednost mora biti postavljena na - (minus). Naravno, stepen prometa se može mijenjati. uvlaka teksta: 0px; #box4:hover( U ovom primjeru, blok se glatko povećava za 2 puta. Ova vrijednost je postavljena transform:scale(2). Ako postavite vrijednost na 1,5, blok će se povećati za 1,5 puta. Na isti način možete smanjiti veličinu blok, na primjer, postavite vrijednost na 0,5. #box5 ( uvlaka teksta: 0px; #box5:lebdi ( Ovdje je pomak dat u pikselima. U ovom slučaju (0,50px). Također možete natjerati blok da se podigne sa ovom vrijednošću od 0,-50px. Ili dijagonalno dolje 50px,50px. Jednom riječju, blok se može pomaknuti bilo gdje. To je u suštini sve što sam htio reći. Ne, ne sve :-) Zaboravio sam da vas podsetim da se ova CSS animacija može primeniti na sve objekte na sajtu: slike, tekst, naslove, ikone itd. Za linkove, glatka promjena boje je savršena, po mom mišljenju je jako lijepa. :-) Pa ipak, ovu informaciju s nama je podijelila stranica shpargalkablog.ru. Na čemu mu veliko hvala. To je sada sve sigurno :-) Vidimo se uskoro, prijatelji. Zdravo. Nedavno sam naišao na niz vrlo korisnih i zanimljivih video tutorijala na temu " CSS animacija". Ali to je loša sreća, svi video snimci su bili na engleskom i, vjerovatno, svaki dizajner izgleda ne zna engleski na dovoljnom nivou da bi razumio i asimilirao sve potrebne informacije. Stoga sam odlučio da vam prevedem ove lekcije (tačnije, da napravim besplatan prijevod). Nema potrebe za zahvaljivanjem. dakle:
Prije nego što vam kažem kako napraviti CSS animacije i zašto su uopće potrebne, htio bih početi tako što bih vam objasnio, šta se desiloCSS animacija, definisati nešto. Animacije na webu imaju dvije glavne ideje. Prva ideja je oživiti nešto. Ti si kao dr Frankenštajn. Imate beživotno čudovište i udahnete mu život. Sekunda - vizualizacija pokreta. A ključna riječ ovdje je "pokret". Postoje dva glavna alata u CSS-u pomoću kojih možemo premještati elemente po web stranici. Prva (o kojoj ćemo danas govoriti) je imovina tranzicija. Prije svega, uz njegovu pomoć kreiramo animacije u CSS-u. Drugi alat je vlasništvo animacija uparena s ključnim kadrovima(@keyframes - ključni kadrovi). Ovaj alat ćemo detaljnije pokriti u sljedećem tutorijalu, ali sada ćemo pogledati svojstvo tranzicije CSS-a. A onda ćemo pričati šta animirati na stranici (kada korisniku treba), a šta ne (kada animacija izgleda glupo i neprikladno), na osnovu korisničkog iskustva (UX - korisničko iskustvo). Prvo, da vidimo kako se ovo svojstvo čita i razumijemo njegovu sintaksu. Ovu nekretninu pišemo ovako: tranzicija: [imovine] [trajanje] [funkcija mjerenja vremena] [kašnjenje] ; tranzicija: visina 1s ease-out 0.2s ; Ovo svojstvo dodjeljujemo elementu koji želimo animirati. Ova stavka postaje glatka tranzicija(ili korak) između nekoliko njegovih stanja (npr. visina 100px i visina 200px). I kako će ovaj izgledati tranzicija(sa engleskog prijelaza), ovisit će o parametrima koje smo za njega postavili. Prvi parametar (vrijednost) svojstva prijelaza je drugi imovine element koji se animira (na primjer, visina). Drugi parametar je trajanje (trajanje) animacije, odnosno koliko će vremena biti potrebno da element prijeđe iz jednog stanja u drugo (na primjer, 2s ili 2000ms). Treći parametar je funkcija mjerenja vremena [tajmingfunkcija] (funkcija ublažavanja [ popuštanjefunkcija]). Kako je intenzitet animacije raspoređen tokom vremena. Na primjer, animacija može početi naglo, zatim usporiti i glatko završiti prijelaz na kraju. Može se koristiti kao ključne riječi (npr. lakoća,lakoća-u-van,linearno) i funkcije Bezierove kocke (na primjer, kubni-bezier(0,17, 0,67, 0,83, 0,67)). Možete jednostavno i praktično postaviti Bezierovu kocku na ovom resursu http://cubic-bezier.com , kao i funkciju koraka kako biste kreirali animaciju okvir po kadar (korak po korak). I na kraju, parametar kašnjenje. Kašnjenje animacije je vrijeme potrebno za čekanje prije nego što animacija (u našem slučaju, prijelaz) počne. Pogledajmo ovaj primjer CSS animacije: tranzicija: neprozirnost 300ms lakoća ulaska 1s; Ovdje animiramo samo imovinu neprozirnost(prozirnost). To znači da ako element koji ćemo animirati ima druga svojstva, kao što su visina, širina ili boja, pa čak i ako se ta svojstva razlikuju u različitim stanjima elementa, tada će samo svojstvo neprozirnosti imati glatki prijelaz (animacija) . Da li razumiješ? Umjesto određene imovine, možete koristiti i ključnu riječ " sve". To znači da animiramo apsolutno sva svojstva elementa koja su promijenjena u novom stanju elementa (ne samo neprozirnost), a koja se uopće mogu animirati. Jer, kao što znate, ne mogu se sva svojstva animirati. Ali više o tome kasnije. Drugi parametar ( 300
gospođa) nam govori da će animacija trajati samo 300 milisekundi. To jest, element će se brzo pojaviti ili brzo otopiti, ovisno o vrijednostima svojstava u svoja dva stanja. Funkcija mjerenja vremena ( lakoća-u-van) kao treći parametar će olakšati početak i kraj animacije. Kašnjenje ( 1
s) označava koliko animacija mora kasniti prije nego što se pokrene. Općenito, ovo je formula kako ćemo snimiti animaciju prijelaza. Ovo je sintaksa. Možete, ako ništa drugo, dodati više od jednog prijelaza [osobina] za jedan element. Na primjer, možete animirati promjene u visini i širini elementa s različitim parametrima. Da biste to učinili, u svojstvu tranzicije, umjesto tačke zarez na kraju, samo stavite zarez i upišite parametre za još jedno svojstvo. I ne zaboravite staviti tačku i zarez na kraju nakon toga da bi to funkcioniralo. Do sada smo raspravljali samo o sintaksi svojstva tranzicije. Hajde sada da razgovaramo o svojstvima koja možemo animirati, a koja ne. Jer postoje neke stvari koje jednostavno nema smisla animirati, a neka svojstva jednostavno ne mogu biti animirana. Uzmimo, na primjer, svojstva kao što su: Očigledno, ima smisla animirati ova svojstva. Ako promijenite njihove vrijednosti, to će vizualno promijeniti element. Ako promijenite veličinu fonta sa, recimo, 14px na 28px, vidjet ćete da font raste glatko i postoji animacija koja traje neko vrijeme. Animacija uvijek ima smisla ako je vrijednost svojstava jasna (najčešće numerička) vrijednost. Ako povećate veličinu fonta na 100px, jasno ćete vidjeti kako slova rastu. Također se može primijetiti glatka promjena boje pozadine [jer boja na webu ima numerički kod, na primjer, crvena rgb(255,0,0)]. Ova svojstva su animirana. Općenito, zapamtite, ako zamislite da je animirano, onda se može animirati. Većinu vremena ovo funkcionira. A evo i liste svojstava koja se ne mogu animirati (primjer): Ovo je nekoliko koje sam uzeo kao primjer kako biste mogli osjetiti razliku između animiranih i neanimiranih CSS svojstava. Uzmi prikaz. Možete li zamisliti kako se mijenja između " prikaz:blok;" i " prikaz:U redu-blok;"? Kako se izgled elementa može glatko mijenjati između " pozicija:relativna;" i " pozicija:apsolutni;"? Ne, naravno da će element izgledati drugačije kada se ova svojstva promijene. Ali kako možete zamisliti tranzicija? Ne možete to učiniti. zar ne? Ne možete zamisliti da se font okreće Helvetica u fontu Georgia, svako slovo, jednostavno neće raditi. Možete promijeniti ove fontove, ali će se oni naglo promijeniti, neće biti animacije. Općenito, mnoga svojstva animiraju, ali neka ne. Sada ćemo odlučiti koja su animirana svojstva bolja za animaciju, a koja lošija. Radi se o performansama. Dotaknuli smo se teme performansi jer su animacije intenzivne resurse. Općenito, evo stvari koje su najprikladnije za animaciju: Štaviše, prve tri stavke ove liste su svi parametri svojstva transformacije (translate, scale, rotate). Pozicioniranje se vrši duž X i Y osi. Ako odlučite da animirate bilo šta drugo, rizikujete da nećete dobiti glatku, glatku tranziciju od 60 fps. Paul Lewis & Irish
A to je upravo ono što nas zanima kada govorimo o performansama animacije. Općenito, najprikladnija svojstva za animaciju su transformisati ineprozirnost. Kada animirate bilo šta drugo, fps animacije može pasti znatno ispod 60fps. Sumirajmo ovu tačku na sljedeći način. Pokušajte izbjeći ponovno crtanje elemenata na web stranici i animiranje elemenata koje je pretraživaču teško prikazati (kao što su sjene). Sada ćemo shvatiti kako pokrenuti animaciju. Šta treba učiniti da bi element animirao. Drugim riječima, kako napraviti animacijucss. Nije teško i postoji mnogo različitih načina da se to uradi. Ali postoje 2 glavna koje morate bez greške savladati. Prvi način je element lebdeće animacije(pseudo-klasa:hover). Zadržite pokazivač iznad elementa i animacija se aktivira. Na ovaj način možete animirati sam element ili bilo koji od njegovih podređenih elemenata. Onda ću vam pokazati kako to funkcionira. Drugi način je promjena klase elementa. To jest, imate običan element, mijenjate (ili dodajete) njegovu klasu u klasu koja ima potpuno različite stilove. Ako dodate klasu, animacija će se dogoditi, a ako uklonite klasu, animacija će se obrnuti. Ovo je dobar način za animiranje menija ili padajućih menija. Pokrili smo sve što nam je potrebno za kreiranje čistih CSS animacija. Vrlo brzo ćemo analizirati praktične primjere, a nešto kasnije - vrlo zanimljive primjere. Jeste li pročitali do samog kraja? Je li ovaj članak bio od pomoći? Ne baš Šta ti se tačno nije svidelo? Da li je članak bio nepotpun ili neistinit? 1
<div class="toSmallWidth">
div
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
.toSmallWidth ( margina : 20px auto ; /* gornje i donje margine od 20px i poravnanje po sredini */ pozadina: crvena /*crvena pozadina za blok*/ visina : 100px ; /*visina bloka 100px*/širina: 800px /*početna širina 800px*/-webkit-ime-animacije: animWidthSitehere; -webkit-animation-duration : 5s; /* svojstvo s prefiksom za preglednike Chrome, Safari, Opera */ animation-name : animWidthSitehere; /* specificirajte naziv ključnih kadrova (nalazi se ispod) */ trajanje animacije: 5s /*postavi trajanje animacije*/
}
/* ključni okviri s prefiksom za preglednike Chrome, Safari, Opera */
@-webkit-keyframes animWidthSitehere( od ( širina : 800px ; ) do ( širina : 100px ; )) @keyframes animWidthSitehere( od ( širina : 800px ; ) /*prvi ključni kadar gdje je širina bloka 800px*/ do ( širina : 100px ; ) /*zadnji ključni kadar gdje je širina bloka 100px*/
}
3. Napredniji primjeri CSS3 animacije
Animation Properties
Brzi primjer
@keyframes
naziv-animacije
@keyframes bilo šta ( /* ... */ ) .selektor (ime-animacije: bilo šta; ) trajanje animacije
funkcija vremena animacije
animacija-kašnjenje
broj iteracija animacije
.selektor (broj-animacija-iteracija: beskonačan; ) smjer animacije
animacija-fill-mode
Glatko promijenite boju elementa pri lebdenju pomoću prijelaza
#kutija1 (
margin-bottom: 5px;
boja pozadine: #ccc;
text-align: centar;
širina: 200px
visina:100px;
granica: 1px čvrsta #888;
-moz-transition: boja pozadine 0.8s 0.1s lakoća;
-o-transition: boja pozadine 0,8s 0,1s lakoća;
-webkit-transition: boja pozadine 0.8s 0.1s lakoća;
kursor: pokazivač;)
boja pozadine: #97CE68;
boja: #333;
}Promjena veličine elementa
#kutija2 (
margin-bottom: 5px;
boja pozadine: #ccc;
boja: #333;
text-align: centar;
širina: 200px
visina:100px;
granica: 1px čvrsta #888;
-moz-transition: sve 1s linearne;
-o-prijelaz: sve 1s linearne;
-webkit-transition: sve 1s linearne;
kursor: pokazivač;)
boja pozadine: #97CE68;
boja: #000;
širina: 150px
visina:50px;
}Object twist
#box3 (
margin-bottom: 5px;
boja pozadine: #ccc;
boja: #333;
text-align: centar;
širina: 200px
visina:100px;
granica: 1px čvrsta #888;
-moz-transition: sve 1s 0.1s ease-in;
-o-transition: sve 1s 0,1s ease-in;
-webkit-transition: sve 1s 0.1s jednostavnost;
kursor: pokazivač;)
boja pozadine: #97CE68;
boja: #000;
-webkit-transform: rotirati (360 stepeni);
-moz-transform: rotirati (360 stepeni);
-o-transform: rotirati (360 stepeni);
}Glatko zumiranje i udaljavanje objekta
#box4 (
margin-bottom: 5px;
boja pozadine: #ccc;
boja: #333;
padding: 10px
text-align: centar;
širina: 200px
visina:100px;
granica: 1px čvrsta #888;
-moz-transition: sve 3s ease-out;
-o-transition: sve 3s ease-out;
-webkit-transition: sve 3s ease-out;
kursor: pokazivač;)
boja pozadine: #97CE68;
boja: #000;
-webkit-transform: skala(2);
-moz-transform:scale(2);
-o-transform:skala(2);
}Glatko pomicanje bloka prema dolje
margin-bottom: 5px;
boja pozadine: #ccc;
boja: #333;
padding: 10px
text-align: centar;
širina: 200px
visina:100px;
granica: 1px čvrsta #888;
-moz-transition: sve 1s jednostavnost-in-out;
-o-transition: sve 1s jednostavnost-in-out;
-webkit-transition: sve 1s jednostavnost ulaska;
kursor: pokazivač;)
boja pozadine: #97CE68;
boja: #000;
-webkit-transform: translate(0,50px);
-moz-transform: translate(0.50px);
-o-transform: translate(0,50px);
}Šta je CSS animacija?
Kako animirati?
CSS svojstva prijelaza - opcije i vrijednosti
Sintaksa
Primjer animacije CSS prijelaza
Šta se može animirati u CSS-u?
Animated Properties
Svojstva koja nisu animirana
Performanse animacije u CSS-u
Kako napraviti animaciju u CSS-u?
Pogovor
Pišite u komentarima i obećavamo da ćemo se poboljšati!