6 this.targetElem = document.getElementById('header');
8 this.breakPoint = 1200;
9 this.elem.addEventListener('click', this.scrollToTop.bind(this));
10 window.addEventListener('scroll', this.onPageScroll.bind(this));
14 let scrollTopPos = document.documentElement.scrollTop || document.body.scrollTop || 0;
15 if (!this.showing && scrollTopPos > this.breakPoint) {
16 this.elem.style.display = 'block';
19 this.elem.style.opacity = 0.4;
21 } else if (this.showing && scrollTopPos < this.breakPoint) {
22 this.elem.style.opacity = 0;
25 this.elem.style.display = 'none';
31 let targetTop = this.targetElem.getBoundingClientRect().top;
32 let scrollElem = document.documentElement.scrollTop ? document.documentElement : document.body;
34 let start = Date.now();
35 let scrollStart = this.targetElem.getBoundingClientRect().top;
38 let percentComplete = (1-((Date.now() - start) / duration));
39 let target = Math.abs(percentComplete * scrollStart);
40 if (percentComplete > 0) {
41 scrollElem.scrollTop = target;
42 requestAnimationFrame(setPos.bind(this));
44 scrollElem.scrollTop = targetTop;
48 requestAnimationFrame(setPos.bind(this));
53 module.exports = BackToTop;