FLIP을 사용하여 HTML 요소 애니메이션
그렇게 하는 동안 대답해야 할 몇 가지 질문이 있다는 것을 알게 될 것입니다. DOM을 변경하는 요소를 어떻게 처리합니까? 애니메이션을 시작하는 시기와 방법. 요소를 복제하거나 재사용해야 합니다. 어떤 식으로든 FLIP이 모든 질문에 답할 것이라고 제안하는 것은 아닙니다. 그러나 애니메이션 관리를 좀 더 쉽게 할 수 있는 좋은 출발점이 될 것입니다.
트릭은 요소 시작 위치에서 시작하지 않고 최종 위치에서 시작하는 것입니다. FLIP이 무엇을 의미하는지 설명하면 이 모든 것이 더 명확해질 것입니다.
FLIP은 First, Last, Invert 및 Play의 약자이며 Paul Lewis에 의해 만들어졌습니다.
첫 번째: 요소 시작점. DOM에서 이 정보를 수집합니다.
마지막: 요소의 최종 위치입니다. 또한 DOM에서 이 정보를 검색합니다.
반전: 첫 번째 위치에서 마지막 위치까지의 변환(크기 조정, 회전, 변환 등)을 계산하고 반전합니다. 따라서 오른쪽으로 100px 애니메이션을 적용해야 하는 경우 x축에서 -100px를 사용하십시오. 이렇게 하면 이전과 동일한 위치에 요소가 표시됩니다.
재생: 애니메이션을 시작합니다. 이제 반전된 시작 위치에서 현재 위치로 전환됩니다. 다른 작업을 수행할 필요가 없습니다.
예를 살펴보겠습니다.
const flip = () => {
// retrieve the block to animate
const block1 = document.querySelector<HTMLDivElement>('#block1')
// an array with 3 target elements
const positions: Element[] = [
document.querySelector('.middle'),
document.querySelector('.end'),
document.querySelector('.start'),
]
let index = 0
if (block1) {
// animate the block on click
block1.addEventListener('click', () => {
// FLIP - First
// retrieve the position of the block at its starting point
const start = block1.getBoundingClientRect()
// Move the element to its destination
positions[index].appendChild(block1)
// FLIP - Last
// retrieve the position of the block at its final position
const end = block1.getBoundingClientRect()
// FLIP - Invert
// Calculate the change from the start to the end position
const dx = start.left - end.left
const dy = start.top - end.top
const dh = start.height - end.height
const dw = start.width - end.width
// FLIP - Play
// Initiate the animation
block1.animate(
[
{
transformOrigin: 'top left',
transform: `translate(${dx}px, ${dy}px)`,
height: `${dh}px`,
width: `${dw}px`,
},
{
transformOrigin: 'top left',
transform: 'none',
},
],
{ duration: 400, fill: 'both', easing: 'ease-in-out' }
)
index = (index + 1) % positions.length
})
}
}
FLIP으로 플레이할 때 몇 가지 문제가 발생할 수 있습니다.
어쨌든 이러한 문제 등을 처리할 수 있는 멋진GSAP plugin이 있습니다.
사진 제공: Liam Shaw on Unsplash
Reference
이 문제에 관하여(FLIP을 사용하여 HTML 요소 애니메이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/syeo66/animating-html-elements-using-flip-ngd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)