Javascript 在继续之前,等待使用js设置CSS属性。
考虑这个JS函数:Javascript 在继续之前,等待使用js设置CSS属性。,javascript,css,Javascript,Css,考虑这个JS函数: function myFunc() { const date = new Date(); const secs = date.getSeconds(); const secDeg = 360*(secs / 60)+ 90 ; hand.style.transitionDuration = '0s'; hand.style.transform = `rotate(${secDeg}deg)`; hand.style.transitionDurati
function myFunc() {
const date = new Date();
const secs = date.getSeconds();
const secDeg = 360*(secs / 60)+ 90 ;
hand.style.transitionDuration = '0s';
hand.style.transform = `rotate(${secDeg}deg)`;
hand.style.transitionDuration = '2s';
}
我希望旋转以0秒的过渡完成。但是,即使在旋转后设置,它仍使用值“2s”。这是因为
rotate()
完成时间太长吗?我该怎么处理?我想我可以用transitionend
事件监听器来做,但是有没有更干净的方法呢?它被调用为fast,所以它会在当时覆盖计时器;)因此,使用延迟或事件结束是最好的
(如果您有jquery)
另一个选项是使用jqueryanimate函数,它在完成时有一个回调。或者(插件)当我将transitionDuration设置为0时,我似乎无法侦听“transitionend”事件:/。如中所示,即使发生旋转,“transitionend”也不会触发,因为transitionDuration为零。不得不使用setTimeout,我真的不喜欢它。
function myFunc() {
const date = new Date();
const secs = date.getSeconds();
const secDeg = 360*(secs / 60)+ 90 ;
hand.style.transitionDuration = '0s';
hand.style.transform = `rotate(${secDeg}deg)`;
$(hand).one("webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend",
function(event) {
hand.style.transitionDuration = '2s';
});
}