多次旋转和缩放过渡不起作用

Multiple rotate and scale transition not working

提问人:FractalCitta 提问时间:11/4/2023 更新时间:11/5/2023 访问量:33

问:

我想在发生特定触发器时应用旋转和缩小以及图像旋转状态之间的过渡。缩小和缩小应在旋转过程中发生。

https://jsfiddle.net/1dq3zo05/46/

button.addEventListener('click', function() {
  image.style.transform = 'scale(4) rotate(' + ja + 'deg) scale(0.25)';
  image.style.transition = 'transform 2s ease-in-out';
  ja+=90;
});

此代码适用于第一个转换,但不适用于任何其他转换。

我见过一些带有状态或@keyframe的代码,但它们都不适用于这种简单的情况。

javascript css css-过渡

评论

1赞 Zorry 11/5/2023
使用动画代替过渡:stackoverflow.com/questions/27283300/resetting-a-css-transition

答:

1赞 imhvost 11/5/2023 #1

制作包装器并旋转它,然后将缩放动画应用于图像。
像这样的东西:

document.querySelector('button').addEventListener('click', () => {
  const imgWrapp = document.querySelector('.img-wrapp');
  if ( imgWrapp.classList.contains('animated') ) {
    return;
  }
  imgWrapp.style.setProperty( '--rotate', Number( getComputedStyle(imgWrapp).getPropertyValue('--rotate') ) + 90 );
  imgWrapp.classList.add('animated');
  setTimeout( () => imgWrapp.classList.remove('animated'), 2000 );
});
.img-wrapp {
  --rotate: 0;
  display: inline-block;
  transition: transform 2s;
  transform: rotate(calc(var(--rotate) * 1deg));
}

.img-wrapp.animated img {
  animation: rotate 2s both;
}

@keyframes rotate {
  33.333% {
    transform: scale(4);
  }
  66.666% {
    transform: scale(.25);
  }
}
<button>Turn the image</button>
<div class="img-wrapp">
  <img src="http://i.imgur.com/8kGmXwB.png" alt="Light Bulb">
</div>