Elementï¼transitionend äºä»¶
åºçº¿
广æ³å¯ç¨
èª 2018å¹´10æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
transitionend äºä»¶ä¼å¨ CSS è¿æ¸¡å®æçæ¶å触åãå¦æè¿æ¸¡å¨å®æå就被移é¤ï¼æ¯å¦å é¤ transition-property æè
å° display 设置为 noneï¼é£ä¹è¯¥äºä»¶å°±ä¸ä¼çæã
transitionend äºä»¶å¨ä¸¤ä¸ªæ¹åä¸è§¦åï¼å½å®å®æä»åå§ç¶æå°è¿æ¸¡ç¶æçè¿æ¸¡æ¶ï¼ä»¥åå½å®å®å
¨æ¢å¤å°é»è®¤æéè¿æ¸¡ç¶ææ¶ãå¦ææ²¡æè®¾ç½®è¿æ¸¡å»¶è¿ææç»æ¶é´ï¼æè
两è
齿¯ 0 ç§æé½æ²¡æå£°æï¼å没æè¿æ¸¡ï¼ä¸ä¸ä¼è§¦åä»»ä½è¿æ¸¡äºä»¶ãå¦æè§¦åäº transitioncancel äºä»¶ï¼transitionend äºä»¶å°±ä¸ä¼è§¦åã
è¿ä¸ªäºä»¶æ¯æ æ³åæ¶çã
è¯æ³
å¨ç±»ä¼¼ addEventListener() çæ¹æ³ä¸ä½¿ç¨è¯¥äºä»¶çåç§°æè
设置äºä»¶å¤çå¨å±æ§ã
addEventListener("transitionend", (event) => {});
ontransitionend = (event) => {};
äºä»¶ç±»å
ä¸ä¸ª TransitionEventï¼ç»§æ¿èª Eventã
äºä»¶å±æ§
åæ ·ç»§æ¿æ¥èªç¶çº§ Event ç屿§ã
TransitionEvent.propertyNameåªè¯»-
ä¸è¿æ¸¡ç¸å ³ç CSS 屿§åç§°çå符串ã
TransitionEvent.elapsedTimeåªè¯»-
ä¸ä¸ª
floatç±»åçæ°å¼ï¼è¡¨ç¤ºå¨äºä»¶è§¦åæ¶è¿æ¸¡å·²ç»è¿è¡çæ¶é´ï¼ä»¥ç§ä¸ºåä½ã该å¼ä¸åtransition-delay屿§çå½±åã TransitionEvent.pseudoElementåªè¯»-
ä¸ä¸ªä»¥
::å¼å§çå符串ï¼å å«è¿è¡å¨ç»ææç伪å ç´ åç§°ãå¦æè¿æ¸¡ææå¹¶ä¸æ¯å¨ä¼ªå ç´ ä¸è¿è¡çï¼åè¯¥å¼æ¯ç©ºå符串''ã
示ä¾
ä¸é¢ç代ç å
è·åä¸ä¸ªå®ä¹äºè¿æ¸¡ææçå
ç´ ï¼ç¶åæ·»å äºä¸ä¸ªçå¬å¨æ¥çå¬ transitionend äºä»¶ï¼
const transition = document.querySelector(".transition");
transition.addEventListener("transitionend", () => {
console.log("è¿æ¸¡ç»æ");
});
ä½¿ç¨ ontransitionend 乿¯ä¸æ ·çï¼
const transition = document.querySelector(".transition");
transition.ontransitionend = () => {
console.log("è¿æ¸¡ç»æ");
};
宿¶ç¤ºä¾
å¨ä¸é¢ç示ä¾ä¸ï¼æä»¬æä¸ä¸ªç®åç <div> å
ç´ ï¼å®éè¿è¿æ¸¡æ ·å¼è¿è¡äºä¿®é¥°ï¼å
¶ä¸å
æ¬ä¸ä¸ªå»¶è¿ï¼
<div class="transition">è®©é¼ æ å¨è¿éæ¬å</div>
<div class="message"></div>
.transition {
width: 100px;
height: 100px;
background: rgb(255 0 0 / 100%);
transition-property: transform, background;
transition-duration: 2s;
transition-delay: 1s;
}
.transition:hover {
transform: rotate(90deg);
background: rgb(255 0 0 / 0%);
}
为æ¤ï¼æä»¬å°æ·»å ä¸äº JavaScript ä»£ç æ¥å±ç¤º transitionstartãtransitionrunãtransitioncancel å transitionend äºä»¶ç触åã卿¤ç¤ºä¾ä¸ï¼å¦æè¦åæ¶è¿æ¸¡ï¼åéå¨è¿æ¸¡ç»æåä¸è¦å°é¼ æ æ¬å卿£å¨è¿æ¸¡çæ¡ä¸ã为äºè§¦åè¿æ¸¡ç»æäºä»¶ï¼éè¦å¨è¿æ¸¡ç»ææ¶ä¿ææ¬åå¨è¿æ¸¡ä¸ã
const message = document.querySelector(".message");
const el = document.querySelector(".transition");
el.addEventListener("transitionrun", () => {
message.textContent = "触å transitionrun";
});
el.addEventListener("transitionstart", () => {
message.textContent = "触å transitionstart";
});
el.addEventListener("transitioncancel", () => {
message.textContent = "触å transitioncancel";
});
el.addEventListener("transitionend", () => {
message.textContent = "触å transitionend";
});
transitionend äºä»¶ä¼å¨ä¸¤ä¸ªæ¹åä¸è§¦åï¼å½æ¹æ¡ç»ææè½¬å¹¶ä¸ä¸éæåº¦è¾¾å° 0 æ 1 æ¶ï¼å
·ä½åå³äºæ¹åï¼ã
å¦ææ²¡æè¿æ¸¡å»¶è¿ææç»æ¶é´ï¼å³å¦æä¸¤è é½ä¸º 0 ææªå£°æï¼åä¸ä¼åçè¿æ¸¡ï¼ä¹ä¸ä¼è§¦åä»»ä½è¿æ¸¡äºä»¶ã
å¦æè§¦åäº transitioncancel äºä»¶ï¼åä¸ä¼è§¦å transitionend äºä»¶ã
è§è
| è§è |
|---|
| CSS Transitions Module Level 1 > # transitionend > |
æµè§å¨å ¼å®¹æ§
åè§
TransitionEventæ¥å£- CSS 屿§ï¼
transitionãtransition-delayãtransition-durationãtransition-propertyãtransition-timing-function - ç¸å
³äºä»¶ï¼
transitionrunãtransitionstartãtransitioncancel - 以
Documentä¸ºç®æ ç该äºä»¶ï¼transitionend - 以
Windowä¸ºç®æ ç该äºä»¶ï¼transitionend