일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- web
- vuex
- array
- promise
- Node
- 3d
- vue-template-compiler
- JS
- WebVR
- PDO
- aframe
- bootstrap
- Three.js
- WebXR
- vuetify
- JavaScript
- npx
- EM6
- 상태관리
- package-lock.json
- auth0
- A-Frame
- javscript
- Component
- VR
- vue
- AR
- version mismatch
- PHP
- CI/CD
Archives
- Today
- Total
대가는 결과를 만든다
scroll to animation only with js 예제 본문
반응형
웹페이지에서 스크롤을 내리다가 맨 위쪽으로 한번에 이동하는 go top scroll button을 구현하는데, 대부분의 구현 방식이 jQuery를 이용하고 있다.
CSR 박식 프로젝트를 진행하면서 무거운 라이브러리에 속하는 jQuery를 이용하지 않는 추세라 jQuery가 아닌 순수 자바스크립트로 구현하는 방법을 찾다가 기록 용으로 남겨 놓는다.
물론 스크롤 애니메이션 관련 라이브러리들도 많다.
* code내에서 document.body => document.documentElement 로 수정 필요
document.getElementsByTagName('button')[0].onclick = function () {
scrollTo(document.documentElement, 0, 1250);
}
function scrollTo(element, to, duration) {
var start = element.scrollTop,
change = to - start,
currentTime = 0,
increment = 20;
var animateScroll = function(){
currentTime += increment;
var val = Math.easeInOutQuad(currentTime, start, change, duration);
element.scrollTop = val;
if(currentTime < duration) {
setTimeout(animateScroll, increment);
}
};
animateScroll();
}
//t = current time
//b = start value
//c = change in value
//d = duration
Math.easeInOutQuad = function (t, b, c, d) {
t /= d/2;
if (t < 1) return c/2*t*t + b;
t--;
return -c/2 * (t*(t-2) - 1) + b;
};
'개발 > Javascript' 카테고리의 다른 글
[ES6] 비구조화 할당, 객체 리터럴 생성 간편화 (0) | 2019.12.24 |
---|---|
[ES6] String, Array 관련 함수(spread) 추가 정리 (0) | 2019.12.24 |
[스터디] javscript의 상속 Traditional vs ES6 (0) | 2019.09.24 |
web worker (0) | 2019.07.25 |
[스터디] Javascript ES6 feature 몇 가지 정리 (0) | 2019.02.01 |
Comments