- commit
- c0285e44b4a89e3ee51e5d676cae73bfb55e2903
- parent
- 9eca17672615466a2508815040447c8675c8bf2b
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2018-08-07 21:00
refactoring
Diffstat
| M | smooth-scroll.js | 25 | ++++++++++++++----------- |
1 files changed, 14 insertions, 11 deletions
diff --git a/smooth-scroll.js b/smooth-scroll.js
@@ -11,22 +11,24 @@ 11 11 })(function() { 12 12 'use strict'; 13 1314 -1 var delegated = function(element, eventType, selector, handler) {-1 14 var on = function(element, eventType, selector, fn) { 15 15 element.addEventListener(eventType, function(event) { 16 16 var target = event.target.closest(selector);17 -1 if (target) {18 -1 handler(event, target);-1 17 if (target && element.contains(target)) { -1 18 handler.call(target, event); 19 19 } 20 20 }); 21 21 }; 22 2223 -1 var animate = function(apply, duration) {-1 23 var animate = function(fn, duration) { 24 24 var start = null; 25 25 26 26 var step = function(timestamp) {27 -1 if (!start) start = timestamp;-1 27 if (!start) { -1 28 start = timestamp; -1 29 } 28 30 var progress = Math.min(1, (timestamp - start) / duration);29 -1 apply(progress);-1 31 fn(progress); 30 32 if (progress < 1) { 31 33 window.requestAnimationFrame(step); 32 34 } @@ -58,22 +60,23 @@ 58 60 var headerSelector = (options || {}).headerSelector || '[data-scroll-header]'; 59 61 var header = document.querySelector(headerSelector); 60 62 var scrollY = document.querySelector(selector).offsetTop;61 -1 if (header) scrollY -= header.getBoundingClientRect().height;-1 63 if (header) { -1 64 scrollY -= header.getBoundingClientRect().height; -1 65 } 62 66 smoothScrollTo(null, scrollY, options); 63 67 }; 64 68 65 69 var init = function(options) {66 -1 var selector = (options || {}).selector || '[href^="#"]';67 -168 70 window.addEventListener('popstate', function(event) { 69 71 event.preventDefault(); 70 72 smoothScrollToSelector(window.location.hash, options); 71 73 }); 72 7473 -1 delegated(document, 'click', selector, function(event, target) {-1 75 var selector = (options || {}).selector || '[href^="#"]'; -1 76 on(document, 'click', selector, function(event) { 74 77 event.preventDefault(); 75 7876 -1 var selector = target.getAttribute('href');-1 79 var selector = this.getAttribute('href'); 77 80 history.pushState(null, null, selector); 78 81 smoothScrollToSelector(selector, options); 79 82 });