transitionend event is fired when a CSS transition has completed. In the case where a transition is removed before completion, such as if the transition-property is removed or display 被设为 none , then the event will not be generated.

冒泡 Yes
可取消 Yes
接口 TransitionEvent
事件处理程序特性 ontransitionend

transitionend event is fired in both directions - as it finishes transitioning to the transitioned state, and when it fully reverts to the default or non-transitioned state. If there is no transition delay or duration, if both are 0s or neither is declared, there is no transition, and none of the transition events are fired.  If the transitioncancel event is fired, the transitionend event will not fire.

范例

This code gets an element that has a transition defined and adds a listener to the transitionend event:

const transition = document.querySelector('.transition');
transition.addEventListener('transitionend', () => {
  console.log('Transition ended');
});
					

一样,但使用 ontransitionend :

const transition = document.querySelector('.transition');
transition.ontransitionend = () => {
  console.log('Transition ended');
};
					

实时范例

In the following example, we have a simple <div> element, styled with a transition that includes a delay:

<div class="transition">Hover over me</div>
<div class="message"></div>
					
.transition {
  width: 100px;
  height: 100px;
  background: rgba(255,0,0,1);
  transition-property: transform background;
  transition-duration: 2s;
  transition-delay: 1s;
}
.transition:hover {
  transform: rotate(90deg);
  background: rgba(255,0,0,0);
}
					

To this, we'll add some JavaScript to indicate that the transitionstart , transitionrun , transitioncancel and transitionend events fire. In this example, to cancel the transition, stop hovering over the transitioning box before the transition ends. For the transition end event to fire, stay hovered over the transition until the transition ends.

const message = document.querySelector('.message');
const el = document.querySelector('.transition');
el.addEventListener('transitionrun', function() {
  message.textContent = 'transitionrun fired';
});
el.addEventListener('transitionstart', function() {
  message.textContent = 'transitionstart fired';
});
el.addEventListener('transitioncancel', function() {
  message.textContent = 'transitioncancel fired';
});
el.addEventListener('transitionend', function() {
  message.textContent = 'transitionend fired';
});
					

transitionend event is fired in both directions: when the box finishes turning and the opacity hits 0 or 1, depending on the direction.

If there is no transition delay or duration, if both are 0s or neither is declared, there is no transition, and none of the transition events are fired.

transitioncancel event is fired, the transitionend event will not fire.

规范

规范 状态 注释
CSS Transitions
The definition of 'transitionend' in that specification.
工作草案 初始定义。

浏览器兼容性

The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request. 更新 GitHub 上的兼容性数据
桌面 移动
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
transitionend event Chrome 26
26
1 Alternate Name
Alternate Name Uses the non-standard name: webkitTransitionEnd
Edge ≤79
≤79
≤79 Alternate Name
Alternate Name Uses the non-standard name: webkitTransitionEnd
Firefox 51 IE 10 Opera 12.1
12.1
15 Alternate Name
Alternate Name Uses the non-standard name: webkitTransitionEnd
不支持 11.6 — 15 Alternate Name
Alternate Name Uses the non-standard name: oTransitionEnd
Safari 6.1
6.1
4 Alternate Name
Alternate Name Uses the non-standard name: webkitTransitionEnd
WebView Android ≤37
≤37
1 Alternate Name
Alternate Name Uses the non-standard name: webkitTransitionEnd
Chrome Android 26
26
18 Alternate Name
Alternate Name Uses the non-standard name: webkitTransitionEnd
Firefox Android 51 Opera Android 12.1
12.1
14 Alternate Name
Alternate Name Uses the non-standard name: webkitTransitionEnd
不支持 12 — 14 Alternate Name
Alternate Name Uses the non-standard name: oTransitionEnd
Safari iOS 7
7
3.2 Alternate Name
Alternate Name Uses the non-standard name: webkitTransitionEnd
Samsung Internet Android 1.5
1.5
1.0 Alternate Name
Alternate Name Uses the non-standard name: webkitTransitionEnd

图例

完整支持

完整支持

使用非标名称。

另请参阅

元数据

  • 最后修改: