느낌이 좋은 애니메이션으로 숫자의 가산점을 실현하고 싶어요.
샘플용 일반 HTML
<div class="container">
<p id="count" data-from="0" data-to="4096">0</p>
<button id="button">Start!</button>
</div>
setInterval에서 개수
우선 솔직하게setInterval 실시해 보자.대체로 계산은 됐지만 아무래도 무미건조한 인상을 주는 것 같다.const DURATION = 3600
const el = {
count: document.getElementById('count'),
button: document.getElementById('button')
}
el.button.addEventListener('click', e => {
const from = parseInt(el.count.dataset.from, 10)
const to = parseInt(el.count.dataset.to, 10)
const startTime = Date.now()
const timer = setInterval(() => {
const elapsedTime = Date.now() - startTime
const progress = elapsedTime / DURATION
if (progress < 1) {
el.count.textContent = Math.floor(from + progress * (to - from))
} else {
el.count.textContent = to
clearInterval(timer)
}
}, 16)
})
See the Pen CountUp Animation setInterval by noplan1989 ( @noplan1989 ) on CodePen .
동작이 완급하다.
const DURATION = 3600
const el = {
count: document.getElementById('count'),
button: document.getElementById('button')
}
el.button.addEventListener('click', e => {
const from = parseInt(el.count.dataset.from, 10)
const to = parseInt(el.count.dataset.to, 10)
const startTime = Date.now()
const timer = setInterval(() => {
const elapsedTime = Date.now() - startTime
const progress = elapsedTime / DURATION
if (progress < 1) {
el.count.textContent = Math.floor(from + progress * (to - from))
} else {
el.count.textContent = to
clearInterval(timer)
}
}, 16)
})
setInterval의 동작은 비교적 단조롭기 때문에 완급에 주의해야 한다p>
애니메이션을 느리게 하려면 Tween계의 프로그램 라이브러리를 사용해서 효과적일 것 같아서 이번에 선택했습니다TweenMaxp>
TweenMax는 원소 속성뿐만 아니라 일반 대상에도 사용할 수 있기 때문에 숫자 계수에 적용됩니다.왕 씨 어르신 덕분에 나는 비로소 완급해졌고, 내 피가 이미 해를 넘긴 것 같았다p>
이 예에서 저는 InOut 계열의 Eding을 선택했습니다. 여러분께 보여드리려면 Out 계열의 Eding이 좋을 것 같습니다.p>
const DURATION = 3.6
const el = {
count: document.getElementById('count'),
button: document.getElementById('button')
}
el.button.addEventListener('click', e => {
const from = parseInt(el.count.dataset.from, 10)
const to = parseInt(el.count.dataset.to, 10)
let obj = {count: from}
TweenMax.to(obj, DURATION, {
count: to,
ease: Power3.easeInOut,
onUpdate: () => {
el.count.textContent = Math.floor(obj.count)
}
})
})
See the Pen CountUp Animation TweenMax by noplan1989 ( @noplan1989 ) on CodePen .
フォントを等幅にする
속도가 좀 느리긴 하지만 숫자의 모양을 의식할 수도 있다.전문 서체라면 서체의 폭이 각기 다르기 때문에 어떻게든 변형될 수 있다p>
디자인이 허락된다면 등폭의 글씨체로 바꾸세요.Google fonts도 다양해요.br/>
https://fonts.google.com/?category=Monospace
<!-- Google Fontsから読み込み-->
<link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
.count {
font-family: 'Roboto Mono', monospace;
}
See the Pen CountUp Animation monospace by noplan1989 ( @noplan1989 ) on CodePen .
대체로 괜찮은 것 같아요.br/>
현장에서부터 그렇습니다.
Reference
이 문제에 관하여(느낌이 좋은 애니메이션으로 숫자의 가산점을 실현하고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nishinoshake/items/b91236c77b1987036656텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)