Element: transitionstart 事件
transitionstart 事件在 CSS 過渡 (transition) 實際開始時觸發,即在任何 transition-delay 結束後觸發。
此事件不可取消。
語法
在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。
js
addEventListener("transitionstart", (event) => { })
ontransitionstart = (event) => { }
事件型別
一個 TransitionEvent。繼承自 Event。
事件屬性
也繼承自其父級 Event 的屬性.
TransitionEvent.propertyName只讀-
一個字串,包含與過渡關聯的 CSS 屬性的名稱。
TransitionEvent.elapsedTime只讀-
一個
float,表示事件觸發時過渡已執行的時間(以秒為單位)。此值不受transition-delay屬性的影響。 TransitionEvent.pseudoElement只讀-
一個字串,以
::開頭,包含動畫執行的 偽元素 的名稱。如果過渡未在偽元素上執行,而是在元素上執行,則為空字串:''。
示例
此程式碼為 transitionstart 事件添加了一個監聽器
js
element.addEventListener("transitionstart", () => {
console.log("Started transitioning");
});
與上面相同,但使用了 ontransitionstart 屬性而不是 addEventListener()。
js
element.ontransitionstart = () => {
console.log("Started transitioning");
};
即時示例
在以下示例中,我們有一個簡單的 <div> 元素,其樣式包含一個帶有延遲的過渡。
html
<div class="transition">Hover over me</div>
<div class="message"></div>
css
.transition {
width: 100px;
height: 100px;
background: red;
transition-property: transform, background;
transition-duration: 2s;
transition-delay: 1s;
}
.transition:hover {
transform: rotate(90deg);
background: transparent;
}
對於這一點,我們將新增一些 JavaScript 來指示 transitionstart 和 transitionrun 事件的觸發位置。
js
const transition = document.querySelector(".transition");
const message = document.querySelector(".message");
transition.addEventListener("transitionrun", () => {
message.textContent = "transitionrun fired";
});
transition.addEventListener("transitionstart", () => {
message.textContent = "transitionstart fired";
});
transition.addEventListener("transitionend", () => {
message.textContent = "transitionend fired";
});
區別在於
- transitionrun 在過渡被建立時觸發(即在任何延遲開始時)。
- transitionstart 在實際動畫開始時觸發(即在任何延遲結束時)。
規範
| 規範 |
|---|
| CSS 過渡 # transitionstart |
瀏覽器相容性
載入中…
另見
TransitionEvent介面- CSS 屬性:
transition、transition-delay、transition-duration、transition-property、transition-timing-function - 相關事件:
transitionend,transitionrun,transitioncancel