CSS-egenskaper relaterade till animation
Den här artikeln förklarar CSS-egenskaper relaterade till animationer.
Du kan lära dig om användning och syntax för egenskaperna @keyframes
, animation
och transition
.
YouTube Video
HTML för förhandsgranskning
css-animation.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS Properties Example</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-animation.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties For Animation</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Animation Related Properties</h2>
20 </header>
21 <article>
22 <h3>@keyframes</h3>
23 <section>
24 <h4>Animation Examples</h4>
25 <header><h4>animation: slide 3s ease infinite</h4></header>
26 <section class="sample-view">
27 <div class="box-animation-slide">Slide Box</div>
28 </section>
29 <header><h4>animation: color-change 3s ease infinite</h4></header>
30 <section class="sample-view">
31 <div class="box-animation-color-change">Color Change Box</div>
32 </section>
33 <header><h4>animation: fade 3s ease infinite</h4></header>
34 <section class="sample-view">
35 <div class="box-animation-fade">Fade Box</div>
36 </section>
37 </section>
38 </article>
39 <article>
40 <h3>animation</h3>
41 <section>
42 <h4>Animation Examples</h4>
43 <header><h4>animation: slide 3s ease-in-out infinite</h4></header>
44 <section class="sample-view">
45 <div class="box-animation-ease-in-out">Slide Box</div>
46 </section>
47 <header><h4>animation: color-change 3s ease-in-out 1s 3 alternate</h4></header>
48 <section class="sample-view">
49 <div class="box-animation-alternate">Color Change Box</div>
50 </section>
51 </section>
52 </article>
53 <article>
54 <h3>transition</h3>
55 <section>
56 <h4>Transition Examples</h4>
57 <header><h4>transition: background-color 2s ease</h4></header>
58 <section class="sample-view">
59 <div class="transition-box">Hover me!</div>
60 </section>
61 <header><h4>transition: background-color 5s ease, width 0.5s ease-in</h4></header>
62 <section class="sample-view">
63 <div class="transition-2-properties">Hover me!</div>
64 </section>
65 </section>
66 </article>
67 </main>
68</body>
69</html>
Animation och övergång
@keyframes
-regel
1/* Animation definition */
2@keyframes slide {
3 0% {
4 transform: translateX(0);
5 }
6 50% {
7 transform: translateX(200px);
8 }
9 100% {
10 transform: translateX(0);
11 }
12}
13
14/* Apply the animation */
15.box-animation-slide {
16 width: 100px;
17 height: 100px;
18 background-color: skyblue;
19 animation: slide 3s ease infinite;
20}
@keyframes
används i CSS-animationer för att specificera hur stilar ändras under animationen. I @keyframes
specificeras stiländringar från början till slutet av animationen med tidsprocent eller nyckelord (from
och to
).
- Det här är ett exempel på en animation där ett element glider från vänster till höger och återgår till sin ursprungliga position.
- I det här exemplet skrivs
slide
efter@keyframes
, vilket definierar en animation som heterslide
. 0%
är början av animationen, därtranslateX(0)
placerar elementet på dess ursprungliga plats.50%
är mittpunkten i animationen, där elementet flyttas 200px till höger medtranslateX(200px)
.100%
är slutet av animationen, där elementet återgår till sin ursprungliga position.- I
box-animation-slide
-klassen användsanimation
-egenskapen för att appliceraslide
-animationen med 3-sekundersintervall.
1@keyframes color-change {
2 0% {
3 background-color: red;
4 }
5 25% {
6 background-color: blue;
7 }
8 50% {
9 background-color: green;
10 }
11 75% {
12 background-color: yellow;
13 }
14 100% {
15 background-color: red;
16 }
17}
18
19.box-animation-color-change {
20 width: 100px;
21 height: 100px;
22 background-color: skyblue;
23 animation: color-change 3s ease infinite;
24}
- Du kan detaljerat styra stilarna under en animation. Genom att specificera procent kan du tillämpa olika stilar vid godtyckliga tidpunkter.
- I det här exemplet ändras färgen gradvis från röd till blå till grön till gul och tillbaka till röd.
1@keyframes fade {
2 from {
3 opacity: 0;
4 }
5 to {
6 opacity: 1;
7 }
8}
9
10.box-animation-fade {
11 width: 100px;
12 height: 100px;
13 background-color: blue;
14 animation: fade 3s ease infinite;
15}
- I det här exemplet motsvarar
from
0%
ochto
motsvarar100%
. Detta gör det möjligt att definiera enkla animationer.
Grundläggande syntax
1@keyframes animation-name {
2 0% {
3 /* Style at the start */
4 }
5 50% {
6 /* Style at the midpoint */
7 }
8 100% {
9 /* Style at the end */
10 }
11}
animation-name
: Namnet på animationen. Detta anges med hjälp av egenskapenanimation
elleranimation-name
.- Procent eller nyckelord: Använd procent från
0%
till100%
, eller nyckelordenfrom
(motsvarar0%
) ochto
(motsvarar100%
).
animation
-egenskap
1.box-animation-ease-in-out {
2 width: 100px;
3 height: 100px;
4 background-color: skyblue;
5 animation: slide 3s ease-in-out infinite;
6}
Egenskapen animation
används för att tillämpa animationer på ett element. Animationer definierar hur en uppsättning CSS-stilar förändras över tid. Med egenskapen animation
kan du kontrollera tidspunkten, beteendet, fördröjningen, antalet repetitioner och mer av en animation.
- Klassen
box-animation-ease-in-out
specificerarslide
somanimation-name
och använder animationenslide
definierad i@keyframes
.3s
äranimation-duration
, vilket betyder att varje animationscykel avslutas på 3 sekunder.ease-in-out
äranimation-timing-function
, vilket gör att animationen börjar långsamt, accelererar och sedan saktar ner igen i slutet.infinite
äranimation-iteration-count
, vilket innebär att animationen kommer att upprepas på obestämd tid.
1.box-animation-alternate {
2 width: 100px;
3 height: 100px;
4 background-color: skyblue;
5 animation: color-change 3s ease-in-out 1s 3 alternate;
6}
- Klassen
box-animation-alternate
specificerarcolor-change
somanimation-name
och använder animationencolor-change
definierad i@keyframes
.1s
som följer efterease-in-out
äranimation-delay
, vilket specificerar fördröjningen innan animationen startar. Animationen startar 1 sekund senare.3
som följer efter1s
äranimation-iteration-count
, vilket betyder att animationen upprepas 3 gånger.alternate
äranimation-direction
, vilket specificerar riktningen för animationsuppspelningen.alternate
specificerar att animationen spelas upp växelvis.
Sammansättning av egenskapen animation
Egenskapen animation
är en kortkommandoproperty som kombinerar flera under-egenskaper till en. Här är de viktigaste under-egenskaperna:.
- Egenskapen
animation-name
: Specificerar namnet på animationen som ska tillämpas. Den måste matcha namnet på animationen som är definierad i@keyframes
. - Egenskapen
animation-duration
: Specificerar tiden det tar för animationen att slutföra en cykel. Tidsenheterna är sekunder (s
) eller millisekunder (ms
). - Egenskapen
animation-timing-function
: Specificerar hastighetskurvan för animationen. Värden somease
,linear
,ease-in
,ease-out
,ease-in-out
, etc. används.- Att specificera
ease
gör att animationen börjar långsamt, snabbar upp och sedan saktar ner igen i slutet. - Att specificera
linear
gör att animationen fortskrider med en konstant hastighet från början till slut. - Att specificera
ease-in
gör att animationen börjar långsamt och slutar snabbt. - Att specificera
ease-out
gör att animationen börjar snabbt och slutar långsamt. - Att specificera
ease-in-out
gör att animationen börjar långsamt, går snabbt framåt och slutar långsamt.
- Att specificera
- Egenskapen
animation-delay
specificerar fördröjningen innan animationen startar. Tidsenheten är antingen sekunder eller millisekunder. - Egenskapen
animation-iteration-count
specificerar antalet gånger animationen ska upprepas. Att specificerainfinite
gör att animationen upprepas på obestämd tid. - Egenskapen
animation-direction
specificerar riktningen för animationens uppspelning. Alternativ inkluderarnormal
(framåt),reverse
(bakåt),alternate
(spela växelvis), ochalternate-reverse
(spela växelvis med start bakåt). - Egenskapen
animation-fill-mode
specificerar animationens tillstånd före den startar och efter den slutar. Du kan specificera något avnone
,forwards
,backwards
ellerboth
. - Egenskapen
animation-play-state
specificerar om animationen körs eller är pausad. Du kan specificerarunning
ellerpaused
.
Sammanfattning
Egenskapen animation
är ett kraftfullt verktyg för att dynamiskt ändra elementens stil. Genom att använda @keyframes
kan du definiera hur stilar ändras över tid och styra detaljerade beteenden för animationen med varje underliggande egenskap i animation
.
transition
-egenskapen
1.transition-box {
2 background-color: lightgray;
3 transition: background-color 2s ease;
4}
5
6.transition-box:hover {
7 background-color: steelblue;
8}
9
10.transition-2-properties {
11 background-color: lightgray;
12 width: 150px;
13 height: 50px;
14 transition: background-color 5s ease, width 0.5s ease-in;
15}
16
17.transition-2-properties:hover {
18 background-color: blue;
19 width: 250px;
20}
transition
-egenskapen används för att applicera animationseffekter på ändringar i CSS-stilar. Den möjliggör mjuka övergångar vid tillståndsändringar som hover
, focus
, active
, eller när stilar ändras dynamiskt med JavaScript.
Låt oss titta på ett exempel med klassen transition-box
där bakgrundsfärgen ändras mjukt vid hover på en knapp.
- I klassen transition-box
applicerar transition
-egenskapen en 2-sekunders övergång på ändringen av bakgrundsfärgen. Ändringen specificeras som ease
, vilket gör den mjuk.
- hover
-pseudo-klassen ändrar bakgrundsfärgen från lightgray
till steelblue
när muspekaren hålls över knappen. Den här ändringen sker mjukt under de 2 sekunder som specificerats i klassen transition-box
.
Det är möjligt att applicera transition
på flera egenskaper samtidigt.
- I exemplet med klassen transition-2-properties
ändras bakgrundsfärgen på 5 sekunder och bredden på 0,5 sekunder.
Grundläggande syntax
1/* Basic syntax of transition */
2transition: property duration timing-function delay;
property
specificerar vilka CSS-egenskaper som animationen ska tillämpas på. Att specificeraall
tillämpar animationen på alla egenskaper.duration
specificerar tiden det tar för animationen att slutföras. Ange med sekunder (s
) eller millisekunder (ms
).timing-function
specificerar förändringen i animationens hastighet. Du kan använda alternativ somease
,linear
,ease-in
,ease-out
,ease-in-out
, etc.delay
specificerar fördröjningstiden innan animationen startar. Ange i sekunder eller millisekunder.
Detaljerade egenskaper för transition
1/* Detailed properties of transition */
2transition-property: background-color;
3transition-duration: 0.3s;
4transition-timing-function: ease;
5transition-delay: 500ms;
transition
kan också användas som individuella egenskaper enligt följande.
transition-property
: Specificerar egenskapen som animationen tillämpas på.transition-duration
: Specificerar tiden tills animationen är slutförd.transition-timing-function
: Specificerar animationens hastighetsprogression. Alternativ somease
,linear
,ease-in
,ease-out
,ease-in-out
kan användas.transition-delay
: Specificerar fördröjningstiden innan animationen startar.
Du kan följa med i artikeln ovan med hjälp av Visual Studio Code på vår YouTube-kanal. Vänligen kolla även in YouTube-kanalen.