animation-iteration-count
åºçº¿
广æ³å¯ç¨
èª 2015å¹´9æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
animation-iteration-count CSS 屿§è®¾ç½®å¨ç»åºåå¨åæ¢ååºææ¾ç次æ°
å°è¯ä¸ä¸
animation-iteration-count: 0;
animation-iteration-count: 2;
animation-iteration-count: 1.5;
<section class="flex-column" id="default-example">
<div>Animation <span id="playstatus"></span></div>
<div id="example-element">Select a count to start!</div>
</section>
#example-element {
align-items: center;
background-color: #1766aa;
border-radius: 50%;
border: 5px solid #333;
color: white;
display: flex;
flex-direction: column;
height: 150px;
justify-content: center;
margin: auto;
margin-left: 0;
width: 150px;
}
#playstatus {
font-weight: bold;
}
.animating {
animation-name: slide;
animation-duration: 3s;
animation-timing-function: ease-in;
}
@keyframes slide {
from {
background-color: orange;
color: black;
margin-left: 0;
}
to {
background-color: orange;
color: black;
margin-left: 80%;
}
}
"use strict";
window.addEventListener("load", () => {
const el = document.getElementById("example-element");
const status = document.getElementById("playstatus");
function update() {
status.textContent = "delaying";
el.className = "";
window.requestAnimationFrame(() => {
window.requestAnimationFrame(() => {
el.className = "animating";
});
});
}
el.addEventListener("animationstart", () => {
status.textContent = "playing";
});
el.addEventListener("animationend", () => {
status.textContent = "finished";
});
const observer = new MutationObserver(() => {
update();
});
observer.observe(el, {
attributes: true,
attributeFilter: ["style"],
});
update();
});
使ç¨å¨ç»çç®å屿§ animation å¯ä»¥ä¸æ¬¡æ§è®¾ç½®ææå¨ç»å±æ§ï¼è¿é常é常æ¹ä¾¿ã
è¯æ³
/* å
³é®åå¼ */
animation-iteration-count: infinite;
/* æ°åå¼ */
animation-iteration-count: 3;
animation-iteration-count: 2.4;
/* å¤ä¸ªå¼ */
animation-iteration-count: 2, 0, infinite;
/* å
¨å±å¼ */
animation-iteration-count: inherit;
animation-iteration-count: initial;
animation-iteration-count: revert;
animation-iteration-count: revert-layer;
animation-iteration-count: unset;
animation-iteration-count 屿§å¯ä»¥æå®ä¸ä¸ªæå¤ä¸ªä»¥éå·åéçå¼ã
å¼
infinite-
æ éå¾ªç¯ææ¾å¨ç»ã
<number>-
å¨ç»éå¤ç次æ°ï¼é»è®¤ä¸º
1ãä½ å¯ä»¥æå®éæ´æ°å¼ä»¥ææ¾å¨ç»å¾ªç¯çä¸é¨åï¼ä¾å¦ï¼0.5å°ææ¾å¨ç»å¾ªç¯çä¸åãè´å¼æ¯æ æçã
夿³¨ï¼å½ä½ å¨ animation-* 屿§ä¸æå®å¤ä¸ªéå·åéç弿¶ï¼å®ä»¬å°æç
§ animation-name åºç°ç顺åºåºç¨äºå¨ç»ã对äºå¨ç»æ°éå animation-* 屿§å¼ä¸å¹é
çæ
åµï¼è¯·åè§è®¾ç½®å¤ä¸ªå¨ç»å±æ§å¼ã
å½¢å¼å®ä¹
| åå§å¼ | 1 |
|---|---|
| éç¨å ç´ | all elements, ::before and ::after pseudo-elements |
| æ¯å¦æ¯ç»§æ¿å±æ§ | å¦ |
| 计ç®å¼ | as specified |
| å¨ç»ç±»å | Not animatable |
å½¢å¼è¯æ³
animation-iteration-count =
<single-animation-iteration-count>#
<single-animation-iteration-count> =
infinite |
<number [0,â]>
示ä¾
>设置è¿ä»£æ¬¡æ°
该å¨ç»å°ä¼ææ¾ 10 次ã
HTML
<div class="box"></div>
CSS
.box {
background-color: rebeccapurple;
border-radius: 10px;
width: 100px;
height: 100px;
}
.box:hover {
animation-name: rotate;
animation-duration: 0.7s;
animation-iteration-count: 10;
}
@keyframes rotate {
0% {
transform: rotate(0);
}
100% {
transform: rotate(360deg);
}
}
ç»æ
å°é¼ æ æ¬åå¨ç©å½¢ä¸æ¥ææ¾å¨ç»ã
åè§ CSS å¨ç»ç¤ºä¾ã
è§è
| è§è |
|---|
| CSS Animations Level 1> # animation-iteration-count> |
æµè§å¨å ¼å®¹æ§
åè§
- ä½¿ç¨ CSS å¨ç»
- JavaScript
AnimationEventAPI - å
¶ä»ç¸å
³çå¨ç»å±æ§ï¼
animationãanimation-compositionãanimation-delayãanimation-directionãanimation-durationãanimation-fill-modeãanimation-iteration-countãanimation-nameãanimation-timelineãanimation-timing-function