gpt4 book ai didi

CSS 结束一个关键帧循环动画并让它动画回到开始

转载 作者:行者123 更新时间:2023-11-28 14:38:38 24 4
gpt4 key购买 nike

我有一个旋转正方形的循环动画。当我删除启用动画的类时,正方形立即回到起始位置。

我需要能够在 JS 事件中将正方形动画化回起始位置。

这是一个codepen .

我曾尝试向元素添加变换,并切换到另一个关键帧动画,但均无效。

html:

<div class="container">
<div class="animate rotating"></div>
</div>

CSS:

.container{
position: absolute;
width: 100%;
height: 100%;
background-color: #333;
}

.animate{
width: 100px;
height: 100px;
background-color: red;
position: absolute;
top: 50%;
left: 50%;
margin: -50px 0 0 -50px;
transform: all 2s ease;
}

@keyframes rotating {
0%{transform: rotate(30deg);}
50%{transform: rotate(-30deg);}
100%{transform: rotate(30deg);}
}

.rotating {
animation: rotating 6s ease-in-out infinite forwards;
animation-delay: -2s;
}

j查询:

$('.animate').click(function(){
$(this).removeClass('rotating');
});

最佳答案

你的代码有点问题:

transform: all 2s ease;

您输错了 transition,但我很确定这种方法不会奏效。如果您愿意使用 jQuery 完成此操作,您可以获得当前旋转并应用于您的元素:

function getRotationDegrees(obj) {
var matrix = obj.css("-webkit-transform") ||
obj.css("-moz-transform") ||
obj.css("-ms-transform") ||
obj.css("-o-transform") ||
obj.css("transform");
if(matrix !== 'none') {
var values = matrix.split('(')[1].split(')')[0].split(',');
var a = values[0];
var b = values[1];
var angle = Math.round(Math.atan2(b, a) * (180/Math.PI));
} else { var angle = 0; }
return (angle < 0) ? angle + 360 : angle;
}

$('.animate').click(function(){
var el = $(this);
var elRotate = getRotationDegrees(el);
el.css('transform',`rotate(${elRotate}deg)`);
el.removeClass('rotating');
// set new transform here
});

这将卡住您的元素旋转,您可以在最后设置所需的旋转,然后应用过渡。

关于CSS 结束一个关键帧循环动画并让它动画回到开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53200096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com