diff options
| author | erdgeist <erdgeist@bauklotz.fritz.box> | 2016-08-08 21:30:24 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@bauklotz.fritz.box> | 2016-08-08 21:30:24 +0200 |
| commit | eaeca0641498c353202285d9cdf6464c28f834f3 (patch) | |
| tree | 3e11831f56c12776159a796e80660ebda24bc833 | |
| parent | 9b703ebb8484808d76714a5409b3d961479f90cb (diff) | |
Improve scroller function
| -rw-r--r-- | js/abmahn.js | 67 |
1 files changed, 38 insertions, 29 deletions
diff --git a/js/abmahn.js b/js/abmahn.js index 7237901..1b8d7c1 100644 --- a/js/abmahn.js +++ b/js/abmahn.js | |||
| @@ -12,40 +12,49 @@ function setText(input, text) { | |||
| 12 | document.getElementById(input).value = text; | 12 | document.getElementById(input).value = text; |
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | function scrollTo(to, duration) { | ||
| 16 | if (document.body.scrollTop == to) return; | ||
| 17 | var diff = to - document.body.scrollTop; | ||
| 18 | var scrollStep = Math.PI / (duration / 10); | ||
| 19 | var count = 0, currPos; | ||
| 20 | start = document.body.scrollTop; | ||
| 21 | scrollInterval = setInterval(function(){ | ||
| 22 | if (document.body.scrollTop != to) { | ||
| 23 | count = count + 1; | ||
| 24 | currPos = start + diff * (0.5 - 0.5 * Math.cos(count * scrollStep)); | ||
| 25 | document.body.scrollTop = currPos; | ||
| 26 | } | ||
| 27 | else { clearInterval(scrollInterval); } | ||
| 28 | },10); | ||
| 29 | } | ||
| 30 | |||
| 31 | |||
| 32 | function scroll(id) { | ||
| 33 | // document.getElementById(id).scrollIntoView(); | ||
| 34 | scrollTo( document.getElementById(id).offsetTop, 500 ); | ||
| 35 | } | ||
| 36 | |||
| 37 | function setClass(id, classes) { | 15 | function setClass(id, classes) { |
| 38 | document.getElementById(id).className = classes; | 16 | document.getElementById(id).className = classes; |
| 39 | } | 17 | } |
| 40 | 18 | ||
| 19 | function scrollTo(el) { | ||
| 20 | if(document.querySelectorAll === void 0 || window.pageYOffset === void 0 || history.pushState === void 0) { | ||
| 21 | el.scrollIntoView(); | ||
| 22 | return; | ||
| 23 | } | ||
| 24 | var duration = 500; | ||
| 25 | var start = window.pageYOffset; | ||
| 26 | var end = document.getElementById(el).getBoundingClientRect().top + window.pageYOffset; | ||
| 27 | |||
| 28 | var clock = Date.now(); | ||
| 29 | var requestAnimationFrame = window.requestAnimationFrame || | ||
| 30 | window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || | ||
| 31 | function(fn){window.setTimeout(fn, 15);}; | ||
| 32 | |||
| 33 | var step = function(){ | ||
| 34 | var elapsed = Date.now() - clock; | ||
| 35 | var t = elapsed / duration; | ||
| 36 | if (elapsed > duration) | ||
| 37 | var pos =end; | ||
| 38 | else | ||
| 39 | var pos = start + (end - start) * (t<.5 ? 4*t*t*t : (t-1)*(2*t-2)*(2*t-2)+1); | ||
| 40 | |||
| 41 | window.scroll(window.pageXOffset, pos); | ||
| 42 | |||
| 43 | if (elapsed <= duration) { | ||
| 44 | requestAnimationFrame(step); | ||
| 45 | } | ||
| 46 | } | ||
| 47 | step(); | ||
| 48 | } | ||
| 49 | |||
| 41 | function step0_cancel() { setClass('wrapper', 'stepcancel'); } | 50 | function step0_cancel() { setClass('wrapper', 'stepcancel'); } |
| 42 | function step0_done() { setClass('wrapper', 'step1'); scrollTo(document.body, 0, 100); } | 51 | function step0_done() { setClass('wrapper', 'step1'); scrollTo('head1'); } |
| 43 | function step1_done() { setClass('wrapper', 'step2'); scroll('head1'); } | 52 | function step1_done() { setClass('wrapper', 'step2'); scrollTo('head1'); } |
| 44 | function step2_done() { setClass('wrapper', 'step3'); scroll('head2'); } | 53 | function step2_done() { setClass('wrapper', 'step3'); scrollTo('head2'); } |
| 45 | function step3_done() { setClass('wrapper', 'step4'); scroll('head3'); } | 54 | function step3_done() { setClass('wrapper', 'step4'); scrollTo('head3'); } |
| 46 | function step4_done() { setClass('wrapper', 'step5'); scroll('head4'); } | 55 | function step4_done() { setClass('wrapper', 'step5'); scrollTo('head4'); } |
| 47 | function step5_done() { setClass('wrapper', 'step6'); scroll('head5'); } | 56 | function step5_done() { setClass('wrapper', 'step6'); scrollTo('head5'); } |
| 48 | function step6_done() { setClass('wrapper', 'step7'); scroll('head6'); } | 57 | function step6_done() { setClass('wrapper', 'step7'); scrollTo('head6'); } |
| 49 | 58 | ||
| 50 | function waldorff() { | 59 | function waldorff() { |
| 51 | setText('abmahnender_kanzlei', 'Waldorff & Frommer RAe'); | 60 | setText('abmahnender_kanzlei', 'Waldorff & Frommer RAe'); |
