gpt4 book ai didi

javascript - 如何将 jQuery animate 函数转换为纯 JS

转载 作者:行者123 更新时间:2023-12-05 06:07:58 25 4
gpt4 key购买 nike

我有这个简单的 jquery 逻辑,如何将其转换为纯 javascript?

此外,我必须在 React 和 Typescript 中使用此代码。

不幸的是,我不知道从哪里开始。任何帮助将不胜感激。


$('.counting').each(function() {
var $this = $(this),
countTo = $this.attr('data-count');

$({ countNum: $this.text()}).animate({
countNum: countTo
},

{
duration: 3000,
easing:'linear',
step: function() {
$this.text(Math.floor(this.countNum));
},
complete: function() {
$this.text(this.countNum);
//alert('finished');
}
});
});

我已经转换它直到开始动画功能..

let counting = document.querySelectorAll(".counting");
let countingArray = Array.prototype.slice.call(counting);

countingArray.forEach((el) => {
let countTo = el.getAttribute("data-count");

//start animate...

我在 https://codepen.io/shvvffle/pen/JRALqG 中引用了这段代码

最佳答案

给你的动画功能:

function animate(render, from, to, duration, timeFx) {
let startTime = performance.now();
requestAnimationFrame(function step(time) {
let pTime = (time - startTime) / duration;
if (pTime > 1) pTime = 1;
render(from + (to - from) * timeFx(pTime));
if (pTime < 1) {
requestAnimationFrame(step);
}
});
}
  • render 是您希望用来更新新值的回调函数;
  • fromto 是动画的初始值和目标值;
  • duration 是以毫秒为单位的动画持续时间;
  • timeFx是从[0, 1]到[0, 1]的计时函数。

您可以将其用作:

countingArray.forEach((el) => {
let countTo = el.getAttribute("data-count");
animate(function(newValue) {
el.innerText = Math.floor(newValue);
}, 0, countTo, 3000, x => x);
});

关于javascript - 如何将 jQuery animate 函数转换为纯 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65227973/

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