javascript - 在页面滚动期间单独触发一个数字计数器的多个实例
问题描述
我已经让 JavaScript 在我的网站上为此工作,但现在需要在滚动期间显示每个统计信息时单独触发它。目前,所有数字同时计数,但我需要更改脚本以便为我网站上的每个数字单独实现“计数”动画。这里是原始代码笔的链接,下面是我从那支笔使用的脚本。
var a = 0;
$(window).scroll(function() {
var oTop = $('#counter').offset().top - window.innerHeight;
if (a == 0 && $(window).scrollTop() > oTop) {
$('.counter-value').each(function() {
var $this = $(this),
countTo = $this.attr('data-count');
$({
countNum: $this.text()
}).animate({
countNum: countTo
},
{
duration: 2000,
easing: 'swing',
step: function() {
$this.text(Math.floor(this.countNum));
},
complete: function() {
$this.text(this.countNum);
//alert('finished');
}
});
});
a = 1;
}
});
解决方案
您的持续时间应取决于 countTo 变量,例如duration: countTo * 50,
Adjust 以获得所需的结果。
$(window).scroll(function() {
$('.counter-value').each(function() {
var contentTop = $(this).offset().top - window.innerHeight;
if ($(window).scrollTop() > contentTop) {
var $this = $(this),
countTo = $this.attr('data-count');
$({
countNum: $this.text()
}).animate(
{
countNum: countTo
},
{
duration: countTo * 50,
easing: 'swing',
step: function() {
$this.text(Math.floor(this.countNum));
},
complete: function() {
$this.text(this.countNum);
}
}
);
}
});
});
推荐阅读
- firebase-hosting - 为什么 firebase deploy 命令不起作用?
- java - 使用springboot,如何访问异步方法中的存储库?
- sql - PostgresSQL - 返回表选择中的第一次出现
- r - Tidyr 与可选组分开
- spring-boot - 无法使用具有授权码的密钥斗篷的 Spring Cloud API 网关发出 POST 请求
- reactjs - 函数和数据未出现在 ContextProps 类型上。使用 TypeScript 反应上下文
- python - 如何使用 Poetry 查找特定软件包的可用版本列表?
- python - 具有行和列总和约束的二进制矩阵
- discord - 如何使用 python 获取不和谐服务器成员的完整列表?
- azure - 在验证通过后未启用 Azure 门户“创建”按钮中创建区块链成员