CSS3 animacija Daje stranicama dinamičnost. Oživljava web stranice, poboljšavajući korisničko iskustvo. Za razliku od CSS3 prijelaza, stvaranje animacije temelji se na ključnim okvirima, koji vam omogućuju automatsku reprodukciju i ponavljanje efekata za određeno vrijeme, kao i zaustavljanje animacije unutar petlje.
CSS3 animacija može se koristiti za gotovo sve html elemente, kao i za pseudo-elemente:before i:after. Popis animiranih svojstava dan je na stranici. Prilikom izrade animacija ne zaboravite na moguće probleme s performansama jer promjena nekih svojstava zahtijeva mnogo resursa.
Uvod u CSS animaciju
Podrška za preglednik
IE: 10.0
Firefox: 16,0, 5,0 -moz-
Krom: 43.0, 4.0 -webkit-
Safari: 4.0 -webkit-
Opera: 12.1, 12.0 -o-
iOS Safari: 9, 7.1 -webkit-
Opera Mini: —
Android preglednik: 44, 4.1 -webkit-
Chrome za Android: 44
1. Pravilo @keyframes
Stvaranje animacije počinje instalacijom ključni okviri@keyframes pravila. Okviri određuju koja će svojstva biti animirana u kojem 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 naziv animacije elementa, koja povezuje pravilo i blok deklaracije elementa.
@keyframes shadow ( from (text-shadow: 0 0 3px black;) 50% (text-shadow: 0 0 30px black;) do (text-shadow: 0 0 3px black;) )
Ključni okviri izrađuju se korištenjem ključnih riječi from i to (ekvivalentno vrijednostima 0% i 100%) ili korištenjem postotnih bodova, kojih možete navesti koliko god želite. Također možete kombinirati ključne riječi i postotke. Ako okviri imaju ista svojstva i vrijednosti, mogu se kombinirati u jednu deklaraciju:
@keyframes pomicanje (od, do (gore: 0; lijevo: 0; ) 25%, 75% (gore: 100%;) 50% (gore: 50%;) )
Ako okviri od 0% ili 100% nisu navedeni, korisnički preglednik ih stvara pomoću izračunatih (izvorno postavljenih) vrijednosti animiranog svojstva. Ako dva ključna okvira imaju iste birače, sljedeći će poništiti prethodni.
Nakon što je pravilo @keyframes deklarirano, možemo ga referencirati u svojstvu animacije:
H1 (veličina fonta: 3,5em; boja: tamnocrvena; animacija: sjena 2s beskonačno lagano uvlačenje; )
Ne preporučuje se animirati nenumeričke vrijednosti (uz rijetke iznimke), jer rezultat u pregledniku može biti nepredvidiv. Također ne biste trebali stvarati ključne okvire za vrijednosti svojstava koje nemaju središnju točku, kao što su vrijednosti svojstva color: pink i color: #ffffff, width: auto i width: 100px ili border-radius: 0 i border- polumjer: 50% (u ovom slučaju bilo bi ispravno navesti border-radius: 0%).
2. Naziv animacije ime-animacije
Svojstvo navodi naziv animacije. Naziv animacije kreira se u pravilu @keyframes. Preporučljivo je koristiti naziv koji odražava bit animacije, a možete koristiti jednu ili više riječi povezanih razmakom - ili znakom podvlake _. Imovina se ne nasljeđuje.
Sintaksa
Div (naziv-animacije: mymove;)
3. Trajanje animacije animation-duration
Svojstvo postavlja trajanje animacije, postavljeno u sekundama ili milisekundama, negativne vrijednosti nisu dopuštene. Nije naslijeđeno. Ako element ima više od jedne specificirane animacije, možete postaviti različito vrijeme za svaku navođenjem vrijednosti odvojenih zarezima.
Sintaksa
Div (trajanje animacije: 2s;)
4. Funkcija mjerenja vremena animacija-funkcija mjerenja vremena
Svojstvo definira promjenu brzine od početka do kraja animacije pomoću funkcija mjerenja vremena. Navedeno pomoću ključnih riječi ili Bezierove krivulje cubic-bezier(x1, y1, x2, y2) . Nije naslijeđeno.
funkcija mjerenja vremena animacije | |
---|---|
Vrijednosti: | |
olakšati | Zadana značajka, animacija počinje sporo, brzo se ubrzava i usporava na kraju. Odgovara cubic-bezieru (0,25,0,1,0,25,1) . |
linearni | Animacija se odvija ravnomjerno kroz cijelo vrijeme, bez oscilacija u brzini. Odgovara cubic-bezier(0,0,1,1) . |
ease-in | Animacija počinje polako, a zatim se lagano ubrzava na kraju. Odgovara cubic-bezieru (0,42,0,1,1) . |
ease-out | Animacija počinje brzo i lagano se usporava na kraju. Odgovara cubic-bezier(0,0,0.58,1) . |
ease-in-out | Animacija počinje sporo i polako završava. Odgovara cubic-bezieru (0,42,0,0,58,1) . |
cubic-bezier(x1, y1, x2, y2) | Omogućuje vam ručno postavljanje vrijednosti od 0 do 1. Možete izgraditi bilo koju putanju brzine promjene animacije. |
korak-start | Postavlja animaciju korak po korak, razbijajući animaciju u segmente, promjene se događaju na početku svakog koraka. Ekvivalent koracima(1, početak) . |
korak-end | Animacija korak po korak, promjene se događaju na kraju svakog koraka. Ekvivalent koracima(1, kraj) . |
koraci (broj koraka, početak|kraj) | Funkcija vremena koraka koja uzima dva parametra. Broj koraka određen je pozitivnim cijelim brojem. Drugi parametar nije obavezan; on određuje trenutak u kojem animacija počinje. S početkom vrijednosti animacija počinje na početku svakog koraka, s završetkom vrijednosti na kraju svakog koraka s odgodom. Latencija se izračunava dijeljenjem vremena animacije s brojem koraka. Ako drugi parametar nije naveden, koristi se zadana vrijednost end. |
početni | Postavlja vrijednost svojstva na zadanu vrijednost. |
naslijediti | Nasljeđuje vrijednost svojstva od nadređenog elementa. |
Sintaksa
Div (funkcija-tempiranja animacije: linearno;)
Animacija korak po korak može se koristiti za stvaranje zanimljivih efekata, kao što je tekst koji se ispisuje ili indikator učitavanja.
5. Animacija s odgodom animacija-odgoda
Svojstvo zanemaruje animaciju određeno vrijeme, što omogućuje zasebno pokretanje svake animacije. Negativno kašnjenje pokreće animaciju od određene točke unutar ciklusa, tj. od vremena navedenog u odgodi. To vam omogućuje primjenu animacije na više fazno pomaknutih elemenata mijenjanjem samo vremena odgode.
Kako bi animacija počela od sredine, trebate postaviti negativnu odgodu jednaku polovici vremena postavljenog u animation-duration. Nije naslijeđeno.
Sintaksa
Div (kašnjenje animacije: 2 s;)
6. Ponovite animaciju animation-iteration-count
Svojstvo vam omogućuje pokretanje animacije nekoliko puta. Vrijednost 0 ili bilo koji negativni broj uklanja animaciju iz reprodukcije. Nije naslijeđeno.
Sintaksa
Div (broj ponavljanja animacije: 3;)
7. Animacija-režija
Svojstvo određuje smjer u kojem se animacija ponavlja. Ako se animacija ponavlja samo jednom, tada ovo svojstvo nema nikakvo značenje. Nije naslijeđeno.
Sintaksa
Div (smjer animacije: alternativni;)
8. Kratka snimka animacije
Svi parametri reprodukcije animacije mogu se kombinirati u jednom svojstvu - animation , navodeći ih razdvojene razmakom:
Animacija: ime-animacije animation-duration animation-timing-function animation-delay animation-iteration-count animation-direction;
Za reprodukciju animacije dovoljno je navesti samo dva svojstva - ime-animacije i trajanje-animacije , preostala svojstva će imati svoje zadane vrijednosti. Redoslijed kojim su svojstva navedena nije bitan, jedina stvar je da vrijeme izvršenja trajanja animacije mora biti prije kašnjenja kašnjenja animacije.
9. Reprodukcija animacije animation-play-state
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 prijeđete mišem preko objekta - stanje:lebdjenje. Nije naslijeđeno.
Sintaksa
Div:lebdjeti (stanje-animacije-reprodukcija: pauzirano;)
10. Stanje elementa prije i nakon reprodukcije animacije animation-fill-mode
Svojstvo određuje redoslijed kojim se stilovi definirani u @keyframes primjenjuju na objekt. Nije naslijeđeno.
animation-fill-mode | |
---|---|
Vrijednosti: | |
nikakav | Zadana vrijednost. Stanje elementa ne mijenja se prije ili nakon reprodukcije animacije. |
naprijed | Nakon što animacija završi (što je određeno vrijednošću broja iteracija animacije), animacija će primijeniti vrijednosti svojstava u trenutku završetka animacije. Ako je animation-iteration-count veći od nule, primjenjuju se vrijednosti za kraj zadnje završene iteracije animacije (ne vrijednost za početak iteracije koja slijedi). Ako je animation-iteration-count nula, primijenjene vrijednosti bit će one koje započinju prvu iteraciju (isto kao u animation-fill-mode: unatrag;). |
unazad | Tijekom razdoblja definiranog pomoću animation-delay, animacija će primijeniti vrijednosti svojstava definiranih u ključnom kadru, čime će započeti prva iteracija animacije. To su ili vrijednosti od ključnog kadra (kada je smjer animacije: normalan ili smjer animacije: naizmjenični) ili vrijednosti do ključnog kadra (kada je smjer animacije: obrnuti ili smjer animacije: naizmjeničan). |
CSS3 animacija je prilično široko korištena. Vrijeme je da čak i najpočetniji graditelji web stranica shvate što je CSS animacija i kako je izraditi. Možda mislite da je CSS3 animacija usmjerena na pomicanje blokova i da izgleda poput crtića. Ali CSS animacija nije samo pomicanje elementa s jedne točke na drugu, već i iskrivljenje i druge transformacije. Da ovo bude jasno i početnicima, sve sam zapisao korak po korak.
1. Osnovna svojstva CSS3 animacije
Mali teorijski blok iz kojeg ćete shvatiti koja su CSS3 svojstva odgovorna za animaciju, kao i koje vrijednosti mogu poprimiti.
- ime-animacije— jedinstveni naziv za animaciju (ključni okviri, o njima ćemo govoriti u nastavku).
- animacija-trajanje— trajanje animacije u sekundama.
- funkcija mjerenja vremena animacije— krivulja promjene brzine animacije. Na prvi pogled vrlo nejasno. Uvijek je lakše pokazati primjerom, a vidjet ćete ih u nastavku. Može poprimiti sljedeće vrijednosti: linearno | lakoća | olakšati | olakšanje | kubični-bezier(n,n,n,n) .
- animacija-odgoda— odgoda u sekundama prije početka animacije.
- brojanje ponavljanja animacije— broj ponavljanja animacije. Može se navesti jednostavno kao broj ili možete navesti beskonačno i animacija će se izvoditi beskrajno.
Ovdje su samo osnovna svojstva, koja su više nego dovoljna za stvaranje vaše prve CSS3 animacije.
Posljednje što trebamo znati i razumjeti iz teorije je kako stvoriti ključne okvire. To je također lako učiniti i radi se korištenjem pravila @keyframes, unutar kojeg su navedeni ključni okviri. Sintaksa za ovo pravilo je sljedeća:
Iznad smo postavili prvi i zadnji okvir. Sva međustanja će se izračunati AUTOMATSKI!
2. Primjer prave CSS3 animacije
Teorija je, kao i obično, dosadna i nije uvijek jasna. Puno je lakše sve vidjeti na stvarnom primjeru, ali najbolje je to učiniti sami na nekoj testnoj HTML stranici.
Kada učite programski jezik, obično napišete program “Hello, world!” iz kojeg možete razumjeti sintaksu tog jezika i neke druge osnovne stvari. Ali mi ne proučavamo programski jezik, već jezik za opisivanje izgleda dokumenta. Stoga ćemo imati svoj vlastiti “Hello, world!”
Evo što ćemo učiniti na primjer: neka nam je nekakav blok Čini se da je sve jasno - samo trebate komprimirati blok Prvo HTML oznake. Vrlo je jednostavno jer radimo samo s jednim elementom po stranici. A evo što je u datoteci stila: Kao što možete vidjeti, naveli smo samo prvi i zadnji ključni okvir, a svi srednji su automatski "izgrađeni". Vaša prva CSS3 animacija je spremna. Kako biste učvrstili stečeno znanje, izradite HTML dokument i CSS datoteku te umetnite (ili još bolje upišite rukom) kod iz primjera. Tada ćete sigurno sve razumjeti. Zatim pokušajte isto s visinom bloka (trebao bi se smanjiti u visini) kako biste osigurali materijal. Gore ste naučili kako jednostavno izraditi CSS3 animaciju. Ako ste to pokušali napraviti vlastitim rukama, već ste razumjeli cijeli proces i sada želite saznati kako možete stvoriti složeniju i ljepšu animaciju. I doista se može stvoriti. Ispod se nalaze 3 lekcije u kojima se animacija stvara na isti način kao u gornjem primjeru. 3 lekcije o CSS animaciji (transformacije) Lekcije će vam pomoći da još bolje razumijete CSS animaciju. Glavna stvar je pokušati ponoviti ono što vidite u 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 prijelazi- to je samo način animacije svojstva stila iz izvornik prije konačni stanje. Dakle prijelazi u CSS-u su specifično vrsta animacije, gdje: Ali što ako želite: Animacija u CSS-u omogućuje vam sve to i više. Animacija je poput mini-filma u kojem vi, kao redatelj, dajete upute (pravila stila) svojim glumcima (HTML elementi) za različite scene (ključne kadrove). Kao i prijelaz, svojstvo animacije je skraćeno za nekoliko drugih: Da biste animirali gumb za preuzimanje, možete napisati animaciju poskakivanje: @keyframes bouncing( 0% ( bottom: 0; box-shadow: 0 0 5px rgba(0,0,0,0.5); ) 100% ( bottom: 50px; box-shadow: 0 50px 50px rgba(0,0, 0,0.1); ) .loading-button ( animacija: poskakivanje 0,5s cubic-bezier(0.1,0.25,0.1,1) 0s beskonačno naizmjenično oboje; ) Najprije trebate napisati stvarnu animaciju poskakivanja koristeći @keyframes i nazvati je. Koristio sam skraćeno svojstvo animacije i uključuje sve moguće opcije: Prije primjene animacije na HTML elemente trebate napišite animaciju koristeći ključne kadrove. Općenito, ključni okviri su svaki međukorak u animaciji. Oni se određuju pomoću postotaka: Također možete koristiti ključne riječi from i to 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 okvir je CSS pravilo, to znači da možete pisati CSS svojstva kao i obično. Da biste definirali animaciju, jednostavno uz nju napišite ključnu riječ @keyframes Ime: @keyframes 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 linearna beskonačna; ) Imajte na umu da početak 0% i kraj 100% sadrže ista pravila CSS. To osigurava da se animacija savršeno ponavlja. Budući da je brojač ponavljanja postavljen na beskonačno, animacija će ići od 0% do 100%, a zatim odmah leđa na 0% i tako unedogled. Ime animacija se koristi najmanje dvaput: Slično nazivima CSS klasa, naziv animacije može uključivati samo: Ime ne može započeti brojem ili dvije crtice. Poput trajanja prijelaza, trajanje animacije može se postaviti na sekundi(1s) ili milisekundi(200 ms). Selektor (trajanje animacije: 0,5 s;) Zadana vrijednost je 0 s, što znači da uopće nema animacije. Slično funkcijama za mjerenje vremena prijelaza, funkcije za mjerenje vremena animacije mogu koristiti ključne riječi, kao što su linearni , ease-out ili se mogu definirati pomoću proizvoljnih Bezierove krivulje. Odabir (funkcija-vremena-animacije: lagano ulaženje; ) Zadana vrijednost: jednostavnost. Budući da animacija u CSS-u koristi ključne kadrove, možete postaviti linearni funkcija vremena i simulirati specifična Bezierova krivulja definiranjem mnogi vrlo specifični ključni okviri. Provjerite Bounce.js za naprednu animaciju. Kao i kod odgode prijelaza, odgoda animacije može se postaviti na sekundi(1s) ili milisekundi(200 ms). Zadana vrijednost je 0 s, što znači da nema kašnjenja bilo koje vrste. Korisno kada uključujete više animacija niz. A, .b, .c ( animacija: poskakivanje 1 s; ) .b ( odgoda animacije: 0,25 s; ) .c ( odgoda animacije: 0,5 s; ) Prema zadanim postavkama reproducira se samo animacija jednom(vrijednost 1). Možete postaviti tri vrste vrijednosti: Svojstvo animation-direction navodi hoće li kojim redom očitavaju se ključni okviri. Ovo je lakše zamisliti ako je broj ponavljanja animacije postavljen na beskonačno. Svojstvo animation-fill-mode određuje što će se dogoditi prije početak animacije i nakon njegovo dovršenje. Prilikom utvrđivanja ključni okviri može se specificirati CSS pravila, koji će se primijeniti na različite korake animacije. Sada ova CSS pravila mogu sudarati se s onima koji već primijenjeno na animirane elemente. animation-fill-mode vam omogućuje da pregledniku kažete ako stilovi animacije Također treba primijeniti izvan animacije. Zamislimo se dugme, koji je: Pozdrav, dragi čitatelji. Na ovaj dan, razgovarajmo o prilično zanimljivoj stvari koja se zove CSS animacija. Odnosno, ova animacija elemenata radi se samo pomoću stilova i ovdje se ne koriste skripte. Kao što vidite, ovdje postoji atribut :lebdjeti, koji mijenja stil pozadine kada lebdite; u nekim bi primjerima trebao biti potreban. ispuna: 10px; uvlaka teksta: 0px; #kutija1 :lebdjeti { Kao što vidite, ovu smo animaciju postigli pomoću atributa tranzicija. Ovdje možete promijeniti brzinu animacije u sekundama, u ovom slučaju to košta 0,8s prije nego što se boja potpuno promijeni prilikom lebdenja i 0,1s prije nego što animacija proradi nakon lebdenja i uklanjanja pokazivača. (Oprostite zbog zagonetke :-)) Ova se vrijednost može mijenjati prema vašim potrebama. Boja pozadine pri lebdenju postavljena je kao atribut :lebdjeti, ovdje je potrebno, inače animacija neće raditi. ispuna: 10px; uvlaka teksta: 0px; #kutija2 :lebdjeti { U ovom smo primjeru postigli glatku promjenu veličine bloka pri lebdenju. Standardna vrijednost je 200 x 100, a vrijednost lebdenja je 150 x 50, što je određeno atributom :lebdjeti. Ovdje također možete promijeniti blok samo po širini ili visini, samo trebate :lebdjeti 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. ispuna: 10px; uvlaka teksta: 0px; #box3: lebdite ( Torzija se javlja korištenjem 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 u smjeru suprotnom od kazaljke na satu, transformirati vrijednost treba postaviti na - (minus). Naravno, stupanj rotacije se može mijenjati. uvlaka teksta: 0px; #box4: lebdite ( U ovom primjeru, blok se glatko povećava u veličini 2 puta. Ova vrijednost je postavljena transformacija: mjerilo (2). Ako postavite vrijednost na 1,5, blok će se povećati 1,5 puta. Na isti način na koji možete smanjiti veličinu blok, na primjer postavite vrijednost na 0,5. #box5 ( uvlaka teksta: 0px; #box5: lebdite ( Ovdje je kretanje navedeno u pikselima. U ovom slučaju (0.50px). Također možete podići blok s ovom vrijednošću od 0.-50px. Ili dijagonalno prema dolje 50px,50px. Jednom riječju, blok se može premjestiti bilo gdje. To je u biti sve što sam htio reći. Ne, ne sve :-) Zaboravio sam vas podsjetiti da se ova CSS animacija može primijeniti na bilo koji objekt na stranici: slike, tekst, naslove, ikone itd. Za veze, glatka promjena boje je savršena; po mom mišljenju, vrlo je lijepa. :-) Također, ovu informaciju podijelila je s nama stranica shpargalkablog.ru. Na čemu mu veliko hvala. To je sada sve sigurno :-) Vidimo se uskoro prijatelji. Bok svima. Nedavno sam naišao na niz vrlo korisnih i zanimljivih video tutorijala na temu " CSS animacija" Ali to je loša sreća, svi su videozapisi bili na engleskom i, vjerojatno, svaki dizajner izgleda ne zna engleski na dovoljnoj razini da razumije i asimilira sve potrebne informacije. Stoga sam odlučio prevesti ove lekcije za vas (ili bolje rečeno, napraviti besplatan prijevod). Ne treba zahvaljivati. Tako:
Prije nego što vam kažem kako napraviti CSS animacije i zašto su one uopće potrebne, htio bih vam prvo objasniti, što se dogodiloCSS animacija, dajte definiciju ili tako nešto. Animacije na webu imaju dvije glavne ideje. Prva ideja - oživjeti nešto. Ti si kao dr. Frankenstein. Imate beživotno čudovište i udahnete mu život. drugo - vizualizacija pokreta. A ključna riječ ovdje je "kretanje". CSS ima dva glavna alata pomoću kojih možemo pomicati elemente po web stranici. Prvi (o kojem ćemo danas govoriti) je imovina tranzicija. Prije svega, uz njegovu pomoć stvaramo animacije u CSS-u. Drugi alat je vlasništvo animacija uparena s ključnim kadrovima(@keyframes – ključni okviri). Ovaj alat ćemo detaljnije pogledati u sljedećoj lekciji, ali sada ćemo pogledati CSS svojstvo prijelaza. A onda ćemo razgovarati o tome što treba animirati na stranici (kada to korisnik treba), a što ne treba animirati (kada animacija izgleda glupo i neprikladno), na temelju korisničkog iskustva (UX). Prvo, pogledajmo kako se ovo svojstvo čita i razumijemo njegovu sintaksu. Ovo svojstvo pišemo otprilike ovako: tranzicija: [vlasništvo] [trajanje] [funkcija mjerenja vremena] [odgoditi] ; tranzicija: visina 1s popuštanje 0,2s ; Ovo svojstvo dodjeljujemo elementu koji želimo animirati. Ovaj element postaje glatki tranzicija(ili postupno) između nekoliko svojih stanja (na primjer, visina 100 piksela i visina 200 piksela). I kako će ovaj izgledati tranzicija(od engleskog prijelaza), ovisit će o parametrima koje mu damo. Prvi parametar (vrijednost) svojstva prijelaza je drugi vlasništvo element koji treba animirati (npr. visina). Drugi parametar je trajanje (duration) animacije, odnosno koliko će elementu trebati prijelaz iz jednog stanja u drugo (primjerice 2s ili 2000ms). Treći parametar je funkcija mjerenja vremena [vrijemefunkcija] (ising funkcija [ popuštanjefunkcija]). Kako će intenzitet animacije biti raspoređen kroz cijelo vrijeme. Na primjer, animacija može početi naglo, a zatim usporiti na kraju i završiti prijelaz glatko. Mogu se koristiti kao ključne riječi (na primjer, olakšatiolakšati-u-van,linearni), i funkcije Bezierove kocke (na primjer, kubični-bezier (0,17, 0,67, 0,83, 0,67)). Možete jednostavno i praktično prilagoditi Bezierovu kocku na ovom resursu http://cubic-bezier.com, kao i funkciju koraka kako biste stvorili animaciju okvir po okvir (korak po korak). I na kraju, parametar odgoditi. Odgoda animacije je vrijeme koje morate čekati prije nego što animacija (u našem slučaju, prijelaz) počne. Pogledajmo ovaj primjer CSS animacije: prijelaz: neprozirnost 300 ms lagano ulaženje 1 s; Ovdje animiramo samo imovinu neprozirnost(neprozirnost). 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 (animaciju). Da li razumiješ? Umjesto određenog svojstva, možete koristiti i ključnu riječ " svi" To znači da animiramo apsolutno sva svojstva elementa koja su promijenjena u novom stanju elementa (ne samo opacity), a koja se uopće mogu animirati. Jer, kao što znate, ne mogu se sva svojstva animirati. Ali o tome malo kasnije. Drugi parametar ( 300
ms) govori nam 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 ( olakšati-u-van) s trećim parametrom učinit će početak i kraj animacije glatkijim. Kašnjenje ( 1
s) pokazuje koliko animacija mora kasniti prije nego što se pokrene. Općenito, ovo je formula za snimanje animacije prijelaza. Ovo je sintaksa. Ako je potrebno, možete dodati više od jednog [property] prijelaza 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 prijelaza, umjesto točke i zareza na kraju, stavite samo zarez i napišite parametre za drugo svojstvo. I ne zaboravite nakon toga staviti točku i zarez na kraju kako bi funkcioniralo. Do sada smo raspravljali samo o sintaksi svojstva prijelaza. Sada razgovarajmo o svojstvima, koja možemo animirati, a koja ne. Jer postoje neke stvari koje jednostavno nema smisla animirati, a neka se svojstva jednostavno ne mogu animirati. Uzmimo, na primjer, svojstva kao što su: Očito, ima smisla animirati ova svojstva. Ako promijenite njihove vrijednosti, to će vizualno promijeniti element. Ako promijenite veličinu fonta s npr. 14 na 28 piksela, vidjet ćete da se font postupno povećava i pojavljuje se animacija koja traje neko vrijeme. Animacija uvijek ima smisla ako su vrijednosti svojstava jasne (najčešće numeričke) vrijednosti. Ako povećate veličinu fonta na 100 piksela, 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 može biti animirano. Najčešće ovo radi. A ovdje je popis svojstava koja se ne mogu animirati (primjer): Ovo su neki od njih koje sam uzeo kao primjer kako biste mogli osjetiti razliku između animable i non-animable CSS svojstava. Uzmimo prikaz. Možete li zamisliti kako se vizualno mijenja između " prikaz:blok;" i " prikaz:u redu-blok;"? Kako se izgled elementa može glatko mijenjati između " položaj:relativan;"I" položaj:apsolutni;"? Ne, naravno, element će izgledati drugačije ako se ova svojstva promijene. Ali kako možete zamisliti tranzicija? Ne možeš to učiniti. Pravo? Ne možete zamisliti okretanje fonta Helvetica u fontu Gruzija, svako slovo, jednostavno neće ići. Možete promijeniti ove fontove, ali oni će se naglo promijeniti i neće se pojaviti animacija. Općenito, mnoga svojstva su animirana, ali neka nisu. Sada odlučimo koja su animirana svojstva bolja za animiranje, a koja su lošija. Radi se o izvedbi. Dotaknuli smo se teme izvedbe jer je animacija proces koji zahtijeva mnogo resursa. Općenito, ovo su stvari koje najbolje funkcioniraju za animaciju: Štoviše, sve prve tri stavke ovog popisa su parametri svojstva transformacije (translate, scale, rotate). Pozicioniranje se odvija duž X i Y osi. Ako odlučite animirati bilo što drugo, riskirate da ne dobijete meki, glatki prijelaz od 60 sličica u sekundi. Paul Lewis & Irish
A upravo to nas zanima kada govorimo o izvedbi animacije. Općenito, najprikladnija svojstva za animaciju su transformirati ineprozirnost. Kada animirate bilo što drugo, fps animacije može pasti mnogo ispod 60fps. Sažmimo ovu točku na sljedeći način. Pokušajte izbjeći ponovno crtanje elemenata na web stranici i animiranje elemenata koje preglednik teško prikazuje (na primjer, sjene). Sada shvatimo kako pokrenuti animaciju. Što je potrebno učiniti da element počne animirati. Drugim riječima, kako napraviti animaciju uCSS. Nije teško i postoji mnogo različitih načina za to. Ali postoje 2 glavna koja morate savladati bez greške. Prvi način je animacija kada lebdite iznad elementa(pseudo-klasa: lebdjeti). Pređite mišem iznad elementa i pokrenut će se animacija. Na ovaj način možete animirati sam element ili bilo koji od njegovih podređenih elemenata. Onda ću ti pokazati kako to radi. Drugi način je mijenjanje klase elementa. To jest, imate regularni element, mijenjate (ili dodajete) njegovu klasu u klasu koja ima potpuno različite stilove. Ako dodate klasu, pojavit će se animacija, a ako uklonite klasu, pojavit će se obrnuta animacija. Ovo je dobar način za animiranje izbornika ili padajućih izbornika. Pokrili smo sve što nam je potrebno za stvaranje animacija koristeći čisti CSS. Vrlo brzo ćemo pogledati praktične primjere, a malo kasnije - vrlo zanimljive primjere. Jeste li pročitali do samog kraja? Je li ovaj članak bio koristan? Ne baš Što vam se točno nije svidjelo? Je li članak bio nepotpun ili lažan? 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 automatski; /*vanjske margine na vrhu i dnu od 20px i poravnanje u sredini*/ pozadina:crvena; /*crvena pozadina bloka*/ visina: 100px; /*visina bloka 100px*/širina: 800px; /*početna širina 800px*/-webkit-animation-name : animWidthSitehere; -webkit-animation-duration : 5s; /* svojstvo s prefiksom za preglednike Chrome, Safari, Opera */ ime-animacije : animWidthSitehere; /* navedite naziv ključnih okvira (nalaze se ispod)*/ animacija-trajanje: 5s; /*postavljanje trajanja animacije*/
}
/* ključni okviri s prefiksom za preglednike Chrome, Safari, Opera */
@-webkit-keyframes animWidthSiteovdje ( od (širina: 800px;) do (širina: 100px;)) @keyframes animWidthSiteovdje ( od (širina: 800px;) /*prvi ključni kadar gdje je širina bloka 800px*/ do (širina: 100 px;) /*zadnji ključni kadar, gdje je širina bloka 100px*/
}
3. Složeniji primjeri CSS3 animacija
Svojstva animacije
Brzi primjer
@ključni okviri
ime-animacije
@keyframes što god ( /* ... */ ) .selektor (naziv-animacije: što god; ) animacija-trajanje
funkcija mjerenja vremena animacije
animacija-odgoda
brojanje ponavljanja animacije
.selector ( animation-iteration-count: infinite; ) animacija-režija
animation-fill-mode
Glatko promijenite boju elementa dok lebdite pomoću prijelaza
#box1 (
margina-dno: 5px;
boja pozadine: #ccc;
poravnanje teksta: središte;
širina: 200px;
visina:100px;
rub: 1px solid #888;
-moz-prijelaz: boja pozadine 0,8s 0,1s lakoća;
-o-prijelaz: boja pozadine 0,8 s 0,1 s lakoća;
-webkit-prijelaz: boja pozadine 0,8 s 0,1 s jednostavnost;
kursor: pokazivač;)
boja pozadine: #97CE68;
boja: #333;
}Promjena veličine elementa
#box2 (
margina-dno: 5px;
boja pozadine: #ccc;
boja: #333;
poravnanje teksta: središte;
širina: 200px;
visina:100px;
rub: 1px solid #888;
-moz-prijelaz: sve 1s linearne;
-o-prijelaz: sve 1s linearne;
-webkit-prijelaz: sve 1s linearno;
kursor: pokazivač;)
boja pozadine: #97CE68;
boja: #000;
širina: 150px;
visina:50px;
}Torzija objekta
#box3 (
margina-dno: 5px;
boja pozadine: #ccc;
boja: #333;
poravnanje teksta: središte;
širina: 200px;
visina:100px;
rub: 1px solid #888;
-moz-prijelaz: sve 1s 0,1s lagano upuštanje;
-o-prijelaz: sve 1s 0,1s lagano upuštanje;
-webkit-prijelaz: sve 1 s 0,1 s lagano ulazak;
kursor: pokazivač;)
boja pozadine: #97CE68;
boja: #000;
-webkit-transformacija: rotacija(360deg);
-moz-transformacija: rotacija(360deg);
-o-transformacija: rotacija (360 stupnjeva);
}Glatko približavanje i smanjivanje objekta
#box4 (
margina-dno: 5px;
boja pozadine: #ccc;
boja: #333;
ispuna: 10px;
poravnanje teksta: središte;
širina: 200px;
visina:100px;
rub: 1px solid #888;
-moz-prijelaz: sve 3s popuštanje;
-o-prijelaz: sve 3s popuštanje;
-webkit-transition: sve 3s ease-out;
kursor: pokazivač;)
boja pozadine: #97CE68;
boja: #000;
-webkit-transform: scale(2);
-moz-transformacija: mjerilo(2);
-o-transformacija: mjerilo(2);
}Glatki blok prijenosa prema dolje
margina-dno: 5px;
boja pozadine: #ccc;
boja: #333;
ispuna: 10px;
poravnanje teksta: središte;
širina: 200px;
visina:100px;
rub: 1px solid #888;
-moz-prijelaz: sve 1s lakoća ulaska;
-o-prijelaz: sve 1s lakoća u-van;
-webkit-transition: sve 1s lakoća ulaska;
kursor: pokazivač;)
boja pozadine: #97CE68;
boja: #000;
-webkit-transform: translate(0.50px);
-moz-transformacija: prijevod(0,50px);
-o-transformacija: prevedi (0,50 px);
}Što je CSS animacija?
Kako animirati?
CSS svojstvo prijelaza - parametri i vrijednosti
Sintaksa
Primjer CSS animacije prijelaza
Što možete animirati u CSS-u?
Animable Properties
Svojstva koja nisu animirana
Izvedba animacije u CSS-u
Kako napraviti animaciju u CSS-u?
Pogovor
Pišite u komentarima i obećavamo da ćemo se poboljšati!