2016-05-24 45 views
0

我是一名網頁設計師,我不是一個開發人員。我需要創建一個計時器,當用戶滾動到該div出現的頁面部分時,該計時器從10到1快速倒計時。我打算使用一個只有「10」的粗大字體,滾動數字9-2然後停在1.(即,我不需要一個計時器,它也有小時,冒號,或分鐘。如何創建一個從10開始並在3秒內變爲1的計時器?

任何人有什麼想法嗎?謝謝你的時間提前!!!!

回答

1

這是通過簡單的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>

那會在觸發可見的參數後觸發計數器t在滾動屏幕上。請注意,我添加了兩個項目,僅用於測試目的。

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>

+0

好,太好了。這有效,但我怎麼才能觸發它開始滾動到頁面的某個部分?它將接近頁面的底部。謝謝! – Clare12345

+0

@ Clare12345請參閱我上面更新的答案,並接受答案,如果你喜歡它。 –

+0

請注意,您需要滾動一點點以獲得這兩個元素:) –

相關問題