2012-11-23 5 views
10

잠시 전에 requestAnimationFrame을 발견 한 후, 나는 그것에 대해 알 수있는 모든 정보로 뛰어 들었습니다. 그것에 대해 기본 설명 -requestAnimationFrame을 언제 사용합니까?

어쨌든, 이러한 모든 자원은 나에게 어떻게 requestAnimationFrame 작품이나 방법이/사용해야 수에 대해 뭔가를 얘기하지만, 그것을 사용하는 권리 때 그들 중 누구도 말해 없습니다.

  • (애니메이션의 경우 CSS 애니메이션과 마찬가지로 반복적으로 요소의 스타일을 변경해야합니까?)
  • 자동 이벤트가 하나 또는 여러 요소의 CSS/클래스를 변경하려고 할 때 사용해야합니까?
  • 자동 이벤트가 하나 이상의 요소의 텍스트 값을 변경하려고 할 때 사용해야합니까? (예 : 1 초마다 한 번씩 시계 값을 업데이트)
  • 자동 이벤트로 DOM을 수정해야 할 때 사용해야합니까?
  • 자동화 된 이벤트에 .offsetTop, .offsetLeft와 같은 값이 필요하고 몇 줄 더 위쪽이나 왼쪽과 같은 스타일을 변경하려고 할 때 사용해야합니까?
  • 사용자가 생성 한 이벤트로 인해 위의 변경 사항이 발생하는 경우 사용해야합니까?

TL; DR :이 때 오른쪽 requestAnimationFrame를 사용하는?

답변

4

아직 안됩니다. 적어도, 적어도. 이는 아직 실험적이며 전체 권장 사항에 도달했거나 그렇지 않을 수도 있습니다 (it is still a working draft at this point). 즉, 오래된 브라우저에 대해 신경 쓰지 않는다면, 또는 willing to work with the polyfill available을 사용하는 것이 가장 좋습니다. 브라우저에서 다시 칠하기 (대부분의 애니메이션)가 필요한 화면을 그릴 때입니다.

DOM을 간단하게 수정하는 경우이 방법은 과도합니다. 이는 항목을 빠르게 그리거나 이동시킬 때 애니메이션을 수행 할 때 브라우저의 다시 그리기가 원활하게 진행될 수 있도록해야 할 때만 유용합니다. 그것은 당신이 계산하는 모든 프레임이 화면에 그려지도록 보장 할 것입니다. 또한 애니메이션에보다 정확한 시간 측정을위한 유틸리티를 제공합니다. 첫 번째 인수는 페인트가 발생할 시간이므로, 그 순간에 있어야 할 곳을 확인할 수 있습니다.

DOM에 많은 수정을가하거나 부드럽게 전환 할 필요가없는 경우에는 사용하지 마십시오. 이것은 사용자의 컴퓨터에서 더 비쌉니다. 따라서 이것을 전환, 움직임 및 애니메이션에서보다 매끄럽게 만드는 것으로 제한하려고합니다. 페이지를 변경할 때마다 프레임 다시 그리기를 강제로 수행 할 필요가 없습니다. 응답은 그리기 사이에 여분의 몇 밀리 초를 걱정할 필요가 없을 정도로 충분히 빠르기 때문입니다.

+0

[this] (https : //gist.github.com/1866474) 나는이 방법을 지원하는 최신 브라우저/모바일 장치를 향상시킬 수 있어야하며 구형 브라우저는 단순히 setTimeout으로 폴백해야합니다. 따라서 초안이 변경 될 때 코드를 업데이트하면 이미 rAF를 사용하여 문제가 발생하지 않습니다. 답변을 주셔서 감사합니다. 간단한 수정에 사용하지 않고 대신 내 애니메이션에만 사용합니다. 이제는 jQuery 소스로 다이빙하여이 애니메이션이 부스트를 사용할 수 있는지 확인하십시오 :) –

+1

이 답변은 현재 완전히 사용되지 않습니다. 'requestAnimationFrame'에는 넓은, unprefixed 지원이 있습니다. 또한 단순히'rAF'를 호출하면 다시 그리기가 강제 실행된다는 사실을 알지 못한다. –

+0

우리는이 대답을 받아 들일 수 없을까요? – everlasto

-1

이전 답변에서 말한 것처럼 부드럽게 전환 할 필요가 없으므로 불연속 애니메이션에서 사용해서는 안됩니다. 대부분의 경우 시간에 따라 지속적으로 변화하는 속성에 사용됩니다.

+1

사용상의 해악은 무엇입니까? –

+0

시간이 제어되지 않을 수 있으며 다시 그려진 시간은 브라우저에 의해 결정됩니다. – West

+1

"재 페인트 한 시간"을 "다음에 다시 칠하기 전에 할 수있는 가능성"과 혼동하고 있습니다. –