---
title: 'HTMLElement: transitionstart 事件'
slug: Web/API/HTMLElement/transitionstart_event
tags:
- CSS Transitions
- 事件
- HTML DOM
- HTMLElement
- 参考
- TransitionEvent
- transitionstart
browser-compat: api.HTMLElement.transitionstart_event
---
{{APIRef}}{{SeeCompatTable}}
**`transitionstart`** 事件会在 [CSS transition](/en-US/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions) 实际开始的时候触发, 或者说在某个 {{cssxref("transition-delay")}} 已经结束之后触发。
是否冒泡 |
是 |
是否可取消 |
否 |
接口 |
{{domxref("TransitionEvent")}} |
事件处理器属性 |
{{domxref("GlobalEventHandlers/ontransitionstart", "ontransitionstart")}}
|
## 示例
下列代码对 `transitionstart` 事件添加了一个监听器:
```js
element.addEventListener('transitionstart', () => {
console.log('transition 开始');
});
```
一样的代码,但是使用 [`ontransitionstart`](/en-US/docs/Web/API/GlobalEventHandlers/ontransitionstart) 属性来替代 `addEventListener()`:
```js
element.ontransitionstart = () => {
console.log('transition 开始');
};
```
### 运行实例
在下面的例子中,我们有一个简单的 {{htmlelement("div")}} 元素,并设置了一个包含 delay 的 transition 样式。
```html
Hover over me
```
```css
.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);
}
```
对此,我们再添加一些 JavaScript 代码来指出 {{domxref("HTMLElement/transitionstart_event", "transitionstart")}} 和 {{domxref("HTMLElement/transitionrun_event", "transitionrun")}} 事件在哪里触发。
```js
const transition = document.querySelector('.transition');
const message = document.querySelector('.message');
transition.addEventListener('transitionrun', function() {
message.textContent = 'transitionrun 触发了';
});
transition.addEventListener('transitionstart', function() {
message.textContent = 'transitionstart 触发了';
});
transition.addEventListener('transitionend', function() {
message.textContent = 'transitionend 触发了';
});
```
{{ EmbedLiveSample('Examples', '100%', '150px') }}
不同的地方是:
- transitionrun 在 transition 创建的时候被触发。(或者说在某个 delay 开始的时候)
- transitionstart 在动画实际开始的时候被触发。 (或者说在某个 delay 结束的时候)
## 规范
{{Specifications}}
## 浏览器兼容性
{{Compat}}
## 参见
- {{domxref("GlobalEventHandlers.ontransitionstart")}} 事件处理器
- {{domxref("TransitionEvent")}} 接口
- CSS 属性: {{cssxref("transition")}}, {{cssxref("transition-delay")}}, {{cssxref("transition-duration")}}, {{cssxref("transition-property")}}, {{cssxref("transition-timing-function")}}
- 相关的事件: {{domxref("HTMLElement/transitionend_event", "transitionend")}}, {{domxref("HTMLElement/transitionrun_event", "transitionrun")}}, {{domxref("HTMLElement/transitioncancel_event", "transitioncancel")}}
- 在 {{domxref("Document")}} targets 上的此事件: {{domxref("Document/transitionstart_event", "transitionstart")}}
- 在 {{domxref("Window")}} targets 上的此事件: {{domxref("Window/transitionstart_event", "transitionstart")}}