在我的应用程序中,我正在为页面上元素的不透明度设置动画,例如:
.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。或者,正如我的问题的标题所暗示的那样,非动画属性就是这样吗?