Egenskaben animation-fill-mode

Egenskaben animation-fill-mode indstiller i hvilken position animationer skal stoppe efter afslutningen. Som standard vender animationen tilbage til den oprindelige værdi, og dette kan se ikke særlig pænt ud.

Syntaks

cssselektor {
  animation-fill-mode: backwards | forwards | both | none;
}

Værdier

Værdi Beskrivelse
none Hvis der er indstillet en forsinkelse på animationen - så i løbet af forsinkelsestiden vil elementet forblive på plads, og derefter hoppe til 0%-rammen. Efter afslutningen af animationen vil elementet ikke forblive i den tilstand, hvor den stoppede, men hoppe tilbage til starttilstanden.
backwards Tvinger elementet til at bevæge sig efter indlæsning af siden til 0%-rammen, selvom der er indstillet en forsinkelse animation-delay, og forblive der, indtil animationen starter. Efter afslutningen af animationen vil elementet ikke forblive i den tilstand, hvor den stoppede, men hoppe tilbage til starttilstanden.
forwards Angiver til browseren, at efter afslutningen af animationen vil elementet forblive i den tilstand, hvor den stoppede.
both Inkluderer både backwards og forwards - efter indlæsning af siden vil elementet indstilles til 0%-rammen, og efter afslutningen af animationen vil elementet forblive der, hvor den stoppede.

Standardværdi: none.

Eksempel . Værdien none

I dette eksempel er margin-left indstillet til værdien 300px for elementet, og for animationens første ramme - til 0px. Da der ikke er nogen forsinkelse animation-delay, vil elementet efter indlæsning af siden stille sig i 0px, og ikke i 300px. Foruden det, vil animationen efter afslutningen hoppe tilbage til startværdien:

html<div id="elem"></div>
css@keyframes move {
  from {
    margin-left: 0;
  }
  to {
    margin-left: 400px;
  }
}

#elem {
  margin-left: 300px;
  animation-fill-mode: none;
  animation-delay: 0s;
  animation-duration: 3s;
  animation-name: move;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  border: 1px solid black;
  width: 50px;
  height: 50px;
}

Результат:

Eksempel . Værdien none

I dette eksempel er margin-left indstillet til værdien 300px for elementet, og for animationens første ramme - til 0px. Der er også indstillet en forsinkelse animation-delay på 3 sekunder for elementet, derfor vil elementet efter indlæsning af siden stille sig i 300px, og ikke i 0px, og vil stå der i 3 sekunder, hvorefter den hopper til 0px - og animationen starter derfra. Desuden vil animationen efter afslutningen hoppe tilbage til startværdien:

html<div id="elem"></div>
css@keyframes move {
  from {
    margin-left: 0;
  }
  to {
    margin-left: 400px;
  }
}

#elem {
  margin-left: 300px;
  animation-fill-mode: none;
  animation-delay: 0s;
  animation-duration: 3s;
  animation-name: move;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  border: 1px solid black;
  width: 50px;
  height: 50px;
}

Результат:

Eksempel . Værdien backwards

I dette eksempel er margin-left indstillet til værdien 300px for elementet, og for animationens første ramme - til 0px. Der er også indstillet animation-fill-mode til værdien backwards for elementet, derfor vil elementet efter indlæsning af siden stille sig i 0px, og ikke i 300px, som det var for animation-fill-mode med værdien none. Desuden vil animationen efter afslutningen hoppe tilbage til startværdien:

html<div id="elem"></div>
css@keyframes move {
  from {
    margin-left: 0;
  }
  to {
    margin-left: 400px;
  }
}

#elem {
  margin-left: 300px;
  animation-fill-mode: backwards;
  animation-delay: 0s;
  animation-duration: 3s;
  animation-name: move;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  border: 1px solid black;
  width: 50px;
  height: 50px;
}

Результат:

Eksempel . Værdien none og antal gentagelser lig med 1

I dette eksempel er margin-left indstillet til værdien 300px for elementet, og for animationens første ramme - til 0px. Der er også indstillet en forsinkelse animation-delay på 3 sekunder for elementet, derfor vil elementet efter indlæsning af siden stille sig i 300px, og ikke i 0px, og vil stå der i 3 sekunder, hvorefter den hopper til 0px - og animationen starter derfra. Da animation-fill-mode er indstillet til værdien none, vil elementet efter afspilning af animationen vende tilbage til startværdien:

html<div id="elem"></div>
css@keyframes move {
  from {
    margin-left: 0;
  }
  to {
    margin-left: 400px;
  }
}

#elem {
  margin-left: 300px;
  animation-fill-mode: none;
  animation-delay: 3s;
  animation-duration: 3s;
  animation-name: move;
  animation-iteration-count: 1;
  animation-timing-function: linear;
  border: 1px solid black;
  width: 50px;
  height: 50px;
}

Результат:

Eksempel . Værdien forwards og antal gentagelser lig med 1

I dette eksempel er animation-fill-mode indstillet til værdien forwards, og antallet af gentagelser af animationen - til 1. Efter afspilning af animationen vil elementet forblive i den position, hvor animationen sluttede, og ikke hoppe tilbage til udgangspunktet.

Desuden er margin-left indstillet til værdien 300px for elementet, og for animationens første ramme - til 0px. Der er også indstillet en forsinkelse animation-delay på 3 sekunder for elementet, derfor vil elementet efter indlæsning af siden stille sig i 300px, og ikke i 0px, og vil stå der i 3 sekunder, hvorefter den hopper til 0px - og animationen starter derfra:

html<div id="elem"></div>
css@keyframes move {
  from {
    margin-left: 0;
  }
  to {
    margin-left: 400px;
  }
}

#elem {
  margin-left: 300px;
  animation-fill-mode: forwards;
  animation-delay: 3s;
  animation-duration: 3s;
  animation-name: move;
  animation-iteration-count: 1;
  animation-timing-function: linear;
  border: 1px solid black;
  width: 50px;
  height: 50px;
}

Результат:

Eksempel . Værdien both og antal gentagelser lig med 1

I dette eksempel er animation-fill-mode indstillet til værdien both, og antallet af gentagelser af animationen - til 1. Efter indlæsning af siden vil elementet stå i animationens første ramme (i 0px, og ikke i 300px), og efter afspilning af animationen vil elementet forblive i den position, hvor animationen sluttede, og ikke hoppe tilbage til udgangspunktet:

html<div id="elem"></div>
css@keyframes move {
  from {
    margin-left: 0;
  }
  to {
    margin-left: 400px;
  }
}

#elem {
  margin-left: 300px;
  animation-fill-mode: both;
  animation-delay: 3s;
  animation-duration: 3s;
  animation-name: move;
  animation-iteration-count: 1;
  animation-timing-function: linear;
  border: 1px solid black;
  width: 50px;
  height: 50px;
}

Результат:

Se også