@keyframes
åºçº¿
广æ³å¯ç¨
*
èª 2015å¹´9æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
* æ¤ç¹æ§çæäºé¨åçæ¯æç¨åº¦å¯è½ææä¸åã
å
³é®å¸§ @keyframes at è§åéè¿å¨å¨ç»åºåä¸å®ä¹å
³é®å¸§ï¼æ waypointsï¼çæ ·å¼æ¥æ§å¶ CSS å¨ç»åºåä¸çä¸é´æ¥éª¤ãåè¿æ¸¡ ç¸æ¯ï¼å
³é®å¸§ keyframes å¯ä»¥æ§å¶å¨ç»åºåçä¸é´æ¥éª¤ã
@keyframes slidein {
from {
transform: translateX(0%);
}
to {
transform: translateX(100%);
}
}
JavaScript å¯ä»¥éè¿ CSS 对象模åç CSSKeyframesRule æ¥å£æ¥è®¿é® @keyframesã
è¦ä½¿ç¨å
³é®å¸§ï¼å
å建ä¸ä¸ªå¸¦åç§°ç @keyframes è§åï¼ä»¥ä¾¿åç»ä½¿ç¨ animation-name 屿§å°å¨ç»åå
¶å
³é®å¸§å£°æå¹é
ãæ¯ä¸ª @keyframes è§åå
å«å¤ä¸ªå
³é®å¸§ï¼ä¹å°±æ¯ä¸æ®µæ ·å¼åè¯å¥ï¼æ¯ä¸ªå
³é®å¸§æä¸ä¸ªç¾åæ¯å¼ä½ä¸ºåç§°ï¼ä»£è¡¨å¨å¨ç»è¿è¡ä¸ï¼å¨åªä¸ªé¶æ®µè§¦åè¿ä¸ªå¸§æå
å«çæ ·å¼ã
å¯ä»¥æä»»æé¡ºåºååºå ³é®å¸§ç¾åæ¯ï¼å®ä»¬å°æç §å ¶åºè¯¥åççé¡ºåºæ¥å¤çã
è®©å ³é®å¸§åºåçæ
妿ä¸ä¸ªå
³é®å¸§è§å没ææå®å¨ç»çå¼å§æç»æç¶æï¼ä¹å°±æ¯ï¼0%/from å100%/toï¼æµè§å¨å°ä½¿ç¨å
ç´ çç°ææ ·å¼ä½ä¸ºèµ·å§/ç»æç¶æãè¿å¯ä»¥ç¨æ¥ä»åå§ç¶æå¼å§å
ç´ å¨ç»ï¼æç»è¿ååå§ç¶æã
妿å¨å ³é®å¸§çæ ·å¼ä¸ä½¿ç¨äºä¸è½ç¨ä½å¨ç»ç屿§ï¼é£ä¹è¿äºå±æ§ä¼è¢«å¿½ç¥æï¼æ¯æå¨ç»ç屿§ä»ç¶æ¯ææçï¼ä¸åæ³¢åã
éå¤å®ä¹
妿å¤ä¸ªå
³é®å¸§ä½¿ç¨åä¸ä¸ªåç§°ï¼ä»¥æå䏿¬¡å®ä¹ç为åã @keyframes ä¸åå¨å±å æ ·å¼ (cascade) çæ
åµï¼æä»¥å¨ç»å¨ä¸ä¸ªæ¶å»ï¼é¶æ®µï¼åªä¼ä½¿ç¨ä¸ä¸ªçå
³é®å¸§çæ°æ®ã
妿ä¸ä¸ª @keyframes å çå ³é®å¸§çç¾åæ¯åå¨éå¤çæ åµï¼å @keyframes è§åä¸è¯¥ç¾åæ¯çææå ³é®å¸§é½å°ç¨äºè¯¥å¸§ã妿å¤ä¸ªå ³é®å¸§æå®äºç¸åçç¾åæ¯å¼ï¼å @keyframes è§åå æ¯å¯ä»¥ä½¿ç¨å±å æ ·å¼çã
屿§ä¸ªæ°ä¸å®
妿ä¸ä¸ªå ³é®å¸§ä¸æ²¡æåºç°å ¶ä»å ³é®å¸§ä¸ç屿§ï¼é£ä¹è¿ä¸ªå±æ§å°ä½¿ç¨æå¼ï¼ä¸è½ä½¿ç¨æå¼ç屿§é¤å¤ï¼è¿äºå±æ§ä¼è¢«å¿½ç¥æï¼ãä¾å¦ï¼
@keyframes identifier {
0% {
top: 0;
left: 0;
}
30% {
top: 50px;
}
68%,
72% {
left: 50px;
}
100% {
top: 100px;
left: 100%;
}
}
ä¾åä¸ï¼top 屿§åå«åºç°å¨å
³é®å¸§ 0%ã30% å 100% çä¸ï¼è left 屿§åå«åºç°å¨å
³é®å¸§ 0%ã68%ã72% å 100% ä¸ã
åä¸å ³é®å¸§ä¸çç¸å屿§è¢«éå¤å®ä¹
妿æä¸ä¸ªå ³é®å¸§åºç°äºéå¤çå®ä¹ï¼ä¸éå¤çå ³é®å¸§ä¸ç CSS 屿§å¼ä¸åï¼å以æå䏿¬¡å®ä¹ç屿§ä¸ºåãä¾å¦ï¼
@keyframes identifier {
0% {
top: 0;
}
50% {
top: 30px;
left: 20px;
}
50% {
top: 10px;
}
100% {
top: 0;
}
}
ä¸é¢è¿ä¸ªä¾åä¸ï¼50% å
³é®å¸§ä¸å嫿å设置ç屿§ top: 10px å left: 20px æ¯ææçï¼ä½æ¯å
¶ä»ç屿§ä¼è¢«å¿½ç¥ã
Firefox 14 å¼å§æ¯æå±å keyframesã
å
³é®å¸§ä¸ç !important
å
³é®å¸§ä¸åºç°ç !important å°ä¼è¢«å¿½ç¥ã
@keyframes important1 {
from {
margin-top: 50px;
}
50% {
margin-top: 150px !important;
} /* å¿½ç¥ */
to {
margin-top: 100px;
}
}
@keyframes important2 {
from {
margin-top: 50px;
margin-bottom: 100px;
}
to {
margin-top: 150px !important; /* å¿½ç¥ */
margin-bottom: 50px;
}
}
è¯æ³
>åå¼
<custom-ident>-
帧å表çåç§°ãåç§°å¿ é¡»ç¬¦å CSS è¯æ³ä¸å¯¹æ è¯ç¬¦çå®ä¹ã
from-
çä»·äº
0%ã to-
çä»·äº
100%ã <percentage>-
å¨ç»åºåä¸è§¦åå ³é®å¸§çæ¶é´ç¹ï¼ä½¿ç¨ç¾å弿¥è¡¨ç¤ºã
å½¢å¼åè¯æ³
@keyframes =
@keyframes <keyframes-name> { <qualified-rule-list> }
<keyframes-name> =
<custom-ident> |
<string>
示ä¾
åè§ä½¿ç¨ CSS å¨ç»ã
è§è
| è§è |
|---|
| CSS Animations Level 1 > # keyframes > |