在我的应用程序中,我正在为页面上元素的不透明度设置动画,例如:
.s {
transition-property: opacity;
transition-duration: 250ms;
}
(当然,使用特定于供应商的版本)。进而
.s.hidden {
opacity: 0;
}
因此动画在hidden分配类时开始。问题是,仍然在不透明度为零的元素上检测到鼠标事件,这是我不想要的,因此我需要在过渡完成后visibility设置为hidden或设置display为。我希望能够做类似的事情:none
.s {
transition-property: opacity, visibility;
transition-duration: 250ms;
transition-delay: 0, 250ms;
}
进而
.s.hidden {
opacity: 0;
visibility: hidden;
}
使用 CSS 过渡机制轻松地做到这一点。据我所知,这是行不通的,因为visibility它是不可动画的属性。但是其他过渡框架(例如 d3)确实可以处理非动画属性,很明显,只需在过渡开始或结束时设置值即可。
我能想到的最好的方法是使用transitionend事件(及其特定于浏览器的变体,例如oTransitionEnd)来捕捉过渡的结束并visibility在那时设置,但我想知道是否有更简单的方法,最好坚持纯 CSS。或者,正如我的问题的标题所暗示的那样,非动画属性就是这样吗?