gpt4 book ai didi

javascript - CSS更改动画持续时间而不跳转

转载 作者:太空狗 更新时间:2023-10-29 13:31:20 25 4
gpt4 key购买 nike

我有一个简单的轮子旋转动画。我正在尝试使用 slider (输入范围)控制纺车的速度。我设法做到了这一点,但每次我更改动画时,动画都会重新启动(它会跳转)。寻找一种解决方案来创建平滑的速度提升。当用户增加 slider 的值时,滚轮会以更快的速度旋转。

在下面的代码中,#loading 是纺车。

$(document).on('input', '#slider', function() {
var speed = $(this).val();
$('#speed').html(speed);
$("#loading").css("animation-duration", 50 / speed + "s");
});
#loading {
position: absolute;
width:100px; height:100px; background-color:black;
left: 0;
right: 0;
margin: auto;
transform-origin: 50% 50%;
animation: rotateRight infinite linear;
animation-duration: 0;
}

@keyframes rotateRight {
100% {
transform: rotate(360deg);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div id="loading"></div>
<input type="range" min="0" max="100" value="0" class="slider" id="slider">
<p>Speed: <span id="speed"></span></p>

最佳答案

经典问题
(跳跃..现在)

jQuery版本

var lasttime = 0,  lastduration = 0,  angle = 0;
$(document).on('input', '#slider', function(event) {
var speed = $(this).val();
$('#speed').html(speed);

var el = $("#loading");
var duration = (speed > 0) ? 50 / speed : 0;
var currenttime = event.originalEvent.timeStamp / 1000;
var difftime = currenttime - lasttime;
el.removeClass("enable_rotate").show();

if (!lastduration && duration)
el.css("transform", "");
else
angle += (difftime % lastduration) / lastduration;

if (duration){
el.css("animation-duration", duration + "s")
.css("animation-delay", -duration * angle + "s")
.addClass("enable_rotate");
}
else
el.css("transform", "rotate(" + 360 * angle + "deg)");

angle -= angle | 0; //use fractional part only
lasttime = currenttime;
lastduration = duration;
});
.anime_object {
width:100px; height:100px; background-color:black;
position: absolute;
left: 0;
right: 0;
margin: auto;
}

.enable_rotate {
animation: rotateRight infinite linear;
}

@keyframes rotateRight {
100% {
transform: rotate(360deg);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<img id="loading" class="anime_object">
<input type="range" min="0" max="100" value="0" id="slider">
<p>Speed: <span id="speed"></span></p>

工作草稿

保存当前动画的变量
http://www.w3.org/TR/css-animations-1/#interface-animationevent-attributes

  1. SO
  2. css-tricks.com

关于javascript - CSS更改动画持续时间而不跳转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47578337/

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