크로스 브라우저 jQuery 애니메이션 구현 팁
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
jQuery 애니메이션을 사용하는 웹 개발자 (중간~고급 수준)
핵심 요약
- 애니메이션 속성에 단위 명시:
width: '300px'
형식 사용 (.animate({ width: 300 })
은 일부 브라우저에서 오류 발생) - 비수치형 속성(
display
,position
) 애니메이션 금지: 대신.fadeIn()
,.slideUp()
등 jQuery 내장 메서드 사용 - 애니메이션 큐 관리: 병렬 실행 시
{ queue: false }
옵션 적용 (예:.animate({ height: '300px' }, { duration: 500, queue: false })
) - 이전 애니메이션 중단:
.stop(true, true)
로 큐 누적 방지
섹션별 세부 요약
1. 애니메이션 속성의 단위 명시
width
,height
,margin
등 수치형 속성에px
,em
등 단위 명시 필수- 예:
$('#box').animate({ width: '300px' })
(불가능한$('#box').animate({ width: 300 })
대체)
2. 비수치형 속성 애니메이션 피하기
display
,position
,float
애니메이션은 지원되지 않음- 대체 메서드:
.fadeIn()
,.slideUp()
,.toggleClass()
활용
3. 병렬 애니메이션 실행
- 기본적으로 애니메이션 큐가 활성화되어 순차 실행
- 병렬 실행 시
{ queue: false }
옵션 사용 (예: 두 애니메이션 동시에 실행)
4. 이벤트 반복 시 큐 누적 방지
.stop(true, true)
로 이전 애니메이션 중단 후 새로운 애니메이션 실행- 예:
$('#btn').hover()
내부에.stop(true, true).animate()
적용
5. 오래된 브라우저 대응
MSIE [6-9]
등 IE 6~9 인식을 위한 정규표현식 사용 (/MSIE [6-9]\./.test(navigator.userAgent)
)- 호환성 위해
$('#box').show()
대신$('#box').fadeIn(400)
사용
결론
- 핵심 팁:
.stop()
사용으로 애니메이션 큐 관리,queue: false
로 병렬 실행,display
등 비수치형 속성은 내장 메서드 활용 - 추가 자료: "Mastering jQuery Cross Browser Compatibility" PDF에서 DOM quirks, 플러그인 호환성, AJAX 버그 해결법 제공
- 주의사항: jQuery 애니메이션 엔진은 GPU 가속 미지원, 복잡한 시퀀스는 오래된 브라우저에서 성능 저하 가능성 있음