我是一个网页设计师,我不是很多的开发人员。我需要创建一个计时器,当用户滚动到页面中显示该div的部分时,该计时器会迅速从10下降到1。我计划使用一个大的粗体字体,里面只有"10“,它会滚动数字9-2,然后停止在1。(也就是说,我不需要计时器也有时间、冒号或分钟。)
有人有什么想法吗?提前谢谢!
发布于 2016-05-24 12:59:17
这是通过简单的javascript和一个span元素完成的。
var number = 10;
var counter = document.getElementById('counter');
function countDown() {
counter.innerHTML = '' + number;
number--;
if(number > 0) {
setTimeout(function() { countDown(); }, 1000.0/3);
}
}
countDown();
<span id="counter"></span>
这将触发计数器后,它弹入可见的部分屏幕上滚动。请注意,我添加了两个项,只是为了测试目的。
var elements = {
counterA: {
from: 10,
to: 0,
counterStarted: false,
dom: document.getElementById('counterA'),
speed: 1000.0/3
},
counterB: {
from: 400,
to: 49,
counterStarted: false,
dom: document.getElementById('counterB'),
speed: 1000.0/40
}
};
function countDown(el) {
el.dom.innerHTML = '' + el.from;
el.from--;
if(el.from > el.to) {
setTimeout(function() { countDown(el); }, el.speed);
}
}
function triggerCounterIfVisible(el) {
if(el.counterStarted) return;
var elemTop = el.dom.getBoundingClientRect().top;
var elemBottom = el.dom.getBoundingClientRect().bottom;
var isVisible = (elemTop >= 0) && (elemBottom <= window.innerHeight);
if (isVisible) {
el.counterStarted = true;
countDown(el);
}
}
window.onscroll = function() {
for(var el in elements) {
triggerCounterIfVisible(elements[el]);
}
};
<div style="height: 3000px"></div>
<hr />
<p>Counter: <span id="counterA"></span></p>
<div style="height: 3000px"></div>
<hr />
<p>Counter: <span id="counterB"></span></p>
<div style="height: 3000px"></div>
https://stackoverflow.com/questions/37414252
复制相似问题