diff options
| author | Dirk Engling <erdgeist@erdgeist.org> | 2016-08-08 02:16:04 +0200 |
|---|---|---|
| committer | Dirk Engling <erdgeist@erdgeist.org> | 2016-08-08 02:16:04 +0200 |
| commit | 9b703ebb8484808d76714a5409b3d961479f90cb (patch) | |
| tree | 83a389c70292680603e5d91766ac41e00654d52e | |
| parent | c89a122300ec832b4b5d439322b0c0853d9f864e (diff) | |
change scroller routine to make it work on mobile browsers
| -rw-r--r-- | js/abmahn.js | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/js/abmahn.js b/js/abmahn.js index af8f000..7237901 100644 --- a/js/abmahn.js +++ b/js/abmahn.js | |||
| @@ -12,23 +12,26 @@ function setText(input, text) { | |||
| 12 | document.getElementById(input).value = text; | 12 | document.getElementById(input).value = text; |
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | function scrollTo(element, to, duration) { | 15 | function scrollTo(to, duration) { |
| 16 | if (duration <= 0) return; | 16 | if (document.body.scrollTop == to) return; |
| 17 | var difference = to - element.scrollTop; | 17 | var diff = to - document.body.scrollTop; |
| 18 | var perTick = difference / duration * 2; | 18 | var scrollStep = Math.PI / (duration / 10); |
| 19 | 19 | var count = 0, currPos; | |
| 20 | setTimeout(function() { | 20 | start = document.body.scrollTop; |
| 21 | element.scrollTop = element.scrollTop + perTick; | 21 | scrollInterval = setInterval(function(){ |
| 22 | scrollTo(element, to, duration - 2); | 22 | if (document.body.scrollTop != to) { |
| 23 | }, 10); | 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); | ||
| 24 | } | 29 | } |
| 25 | 30 | ||
| 31 | |||
| 26 | function scroll(id) { | 32 | function scroll(id) { |
| 27 | // document.getElementById(id).scrollIntoView(); | 33 | // document.getElementById(id).scrollIntoView(); |
| 28 | var el = document.getElementById(id); | 34 | scrollTo( document.getElementById(id).offsetTop, 500 ); |
| 29 | var rect = el.getBoundingClientRect(); | ||
| 30 | var top = rect.bottom + window.pageYOffset - el.ownerDocument.documentElement.clientTop; | ||
| 31 | scrollTo( document.body, top, 100 ); | ||
| 32 | } | 35 | } |
| 33 | 36 | ||
| 34 | function setClass(id, classes) { | 37 | function setClass(id, classes) { |
