button.addEventListener('click', () => {
const element = document.createElement('li');
document.body.appendChild(element);
element.style.color = 'black';
element.innerText = 'text';
}
렌더링할 때 자식노드를 붙이는 것과 style을 수정하는 것의 순서는 어떻게 해야할까? 어떻게 하는 것이 성능에 도움이 될까?
button.addEventListener('click', () => {
box.style.transition = 'all 0.5s ease';
box.style.transform = 'translateX(300px)';
box.style.transform = 'translateX(-500px)';
});
위의 예시와 마찬가지다.
브라우저에게 수행하기를 원하는 애니메이션을 알리고 다음 리페인트가 진행되기 전에 해당 애니메이션을 업데이트하는 함수를 호출하게 한다. 이 메소드는 리페인트 이전에 실행할 콜백을 인자로 받는다.
button.addEventListener('click', () => {
requestAnimationFrame(() => {
document.body.style.backgroundColor = 'red';
});
requestAnimationFrame(() => {
document.body.style.backgroundColor = 'orange';
});
requestAnimationFrame(() => {
document.body.style.backgroundColor = 'yellow';
});
});
function handleClick() {
console.log('handleClick')
setTimeout(() => {
console.log('setTimeout');
handleClick();
}, 0);
}
const button = document.querySelector('button');
button.addEventListener('click', () => {
handleClick();
});