animation-delay
åºçº¿
广æ³å¯ç¨
èª 2015å¹´9æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
animation-delay CSS 屿§æå®ä»åºç¨å¨ç»å°å
ç´ å¼å§æ§è¡å¨ç»ä¹åçå¾
çæ¶é´éãå¨ç»å¯ä»¥ç¨åå¼å§ãç«å³ä»å¼å¤´å¼å§æç«å³å¼å§å¹¶å¨å¨ç»ä¸éææ¾ã
å°è¯ä¸ä¸
animation-delay: 250ms;
animation-delay: 2s;
animation-delay: -2s;
<section class="flex-column" id="default-example">
<div>Animation <span id="playstatus"></span></div>
<div id="example-element">Select a delay to start!</div>
</section>
#example-element {
background-color: #1766aa;
color: white;
margin: auto;
margin-left: 0;
border: 5px solid #333;
width: 150px;
height: 150px;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
#playstatus {
font-weight: bold;
}
.animating {
animation-name: slide;
animation-duration: 3s;
animation-timing-function: ease-in;
animation-iteration-count: 2;
animation-direction: alternate;
}
@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-delay: 3s;
animation-delay: 0s;
animation-delay: -1500ms;
/* å¤ä¸ªå¨ç» */
animation-delay: 2.1s, 480ms;
/* å
¨å±å¼ */
animation-delay: inherit;
animation-delay: initial;
animation-delay: revert;
animation-delay: revert-layer;
animation-delay: unset;
å¼
<time>-
å¨ç»åºè¯¥å¼å§çæ¶é´åç§»éï¼ä»åºç¨å¨ç»å°å ç´ çæ¶å»å¼å§è®¡ç®ãå¯ä»¥ç¨ç§ï¼
sï¼ææ¯«ç§ï¼msï¼æå®ãå使¯å¿ éçãæ£å¼è¡¨ç¤ºå¨ç»åºå¨æå®çæ¶é´éè¿å»åå¼å§ãé»è®¤å¼ä¸º
0sï¼è¡¨ç¤ºå¨ç»åºç«å³å¼å§ãè´å¼ä¼å¯¼è´å¨ç»ç«å³å¼å§ï¼ä½æ¯ä»å¨ç»å¾ªç¯çæä¸ªæ¶é´ç¹å¼å§ãä¾å¦ï¼å¦æä½ å°
-1sä½ä¸ºå¨ç»å»¶è¿æ¶é´ï¼åå¨ç»å°ç«å³å¼å§ï¼ä½æ¯å°å¨å¨ç»åºåç第 1 ç§å¼å§ãå¦æä½ ä¸ºå¨ç»å»¶è¿æå®è´å¼ï¼ä½èµ·å§å¼æ¯éå«çï¼åèµ·å§å¼åèªåºç¨å¨ç»å°å ç´ çæ¶å»ã
夿³¨ï¼å½ä½ å¨ animation-* 屿§ä¸æå®å¤ä¸ªéå·åéç弿¶ï¼å®ä»¬å°æç
§ animation-name åºç°ç顺åºåºç¨äºå¨ç»ã对äºå¨ç»æ°éå animation-* 屿§å¼ä¸å¹é
çæ
åµï¼è¯·åè§è®¾ç½®å¤ä¸ªå¨ç»å±æ§å¼ã
å½¢å¼å®ä¹
| åå§å¼ | 0s |
|---|---|
| éç¨å ç´ | all elements, ::before and ::after pseudo-elements |
| æ¯å¦æ¯ç»§æ¿å±æ§ | å¦ |
| 计ç®å¼ | as specified |
| å¨ç»ç±»å | Not animatable |
å½¢å¼è¯æ³
animation-delay =
<time>#
示ä¾
>设置å¨ç»å»¶è¿
è¿ä¸ªå¨ç»æ 2 ç§çå»¶è¿ã
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-delay: 2s;
}
@keyframes rotate {
0% {
transform: rotate(0);
}
100% {
transform: rotate(360deg);
}
}
ç»æ
å°é¼ æ æ¬åå¨ç©å½¢ä¸æ¥ææ¾å¨ç»ã
åè§ CSS å¨ç»ä»¥è·å示ä¾ã
è§è
| è§è |
|---|
| CSS Animations Level 1 > # animation-delay > |
æµè§å¨å ¼å®¹æ§
åè§
- ä½¿ç¨ CSS å¨ç»
- JavaScript
AnimationEventAPI - å
¶ä»ç¸å
³çå¨ç»å±æ§ï¼
animationãanimation-compositionãanimation-directionãanimation-durationãanimation-fill-modeãanimation-iteration-countãanimation-nameãanimation-play-stateãanimation-timelineãanimation-timing-function