자바스크립트 애니메이션 프레임을 활용한 토글 버튼 애니메이션 만들기
토글 버튼은 웹 개발에서 많이 사용되는 UI 요소 중 하나입니다. 이번에는 자바스크립트의 애니메이션 프레임을 활용하여 토글 버튼에 애니메이션 효과를 추가하는 방법을 알아보겠습니다.
HTML 구조
저희는 다음과 같은 HTML 구조를 가진 토글 버튼을 만들 예정입니다.
<button class="toggle-button">토글 버튼</button>
<div class="toggle-content">토글될 내용</div>
CSS 스타일
우선 토글 버튼의 초기 상태에 대한 CSS 스타일을 정의해줍니다.
.toggle-content {
display: none;
}
자바스크립트 코드
이제는 자바스크립트를 사용하여 토글 애니메이션을 만들어보겠습니다.
const button = document.querySelector('.toggle-button');
const content = document.querySelector('.toggle-content');
button.addEventListener('click', () => {
if (content.style.display === 'none') {
content.style.display = 'block';
animateToggle("down");
} else {
content.style.display = 'none';
}
});
function animateToggle(direction) {
const start = performance.now();
const duration = 1000; // 애니메이션 지속 시간 (1초로 설정)
const contentHeight = content.scrollHeight;
const easing = t => t<0.5 ? 2*t*t : -1+(4-2*t)*t; // 이징 함수 (easing function)
requestAnimationFrame(function animate(time) {
let timeFraction = (time - start) / duration;
if (timeFraction > 1) timeFraction = 1;
const progress = easing(timeFraction);
const height = direction === "down" ? contentHeight * progress : contentHeight * (1 - progress);
content.style.height = height + "px";
if (timeFraction < 1) {
requestAnimationFrame(animate);
}
});
}
사용 방법
이제 토글 버튼을 클릭해보면 텍스트 내용이 부드럽게 나타나고 사라지는 애니메이션 효과를 볼 수 있습니다.
마치며
이번에는 자바스크립트 애니메이션 프레임을 활용하여 토글 버튼에 애니메이션 효과를 추가하는 방법을 알아보았습니다. 이를 응용하여 다양한 웹 UI 요소들에 애니메이션 효과를 적용할 수 있으니 참고하시기 바랍니다.
#JavaScript #Animation #토글버튼애니메이션