Observe Panel Resize
observePanelResize 옵션으로 각 패널 요소에 ResizeObserver를 연결해, 패널 크기가 변경될 때 Flicking이 자동으로 레이아웃을 재계산하도록 합니다.
패널 안의 "넓히기" 버튼을 눌러 두 캐러셀의 차이를 확인하세요.
- JavaScript
- React
- Vue@3
요약
주요 옵션
| 옵션 | 타입 | 기본값 | 설명 |
|---|---|---|---|
observePanelResize | boolean | false | 패널 요소의 크기 변경을 ResizeObserver로 감지 |
의존 옵션
observePanelResize는 useResizeObserver가 true일 때만 동작합니다. useResizeObserver의 기본값이 true이므로 별도 설정 없이 사용할 수 있습니다.
값별 비교
| 값 | 동작 | 적합한 상황 |
|---|---|---|
false | 뷰포트 크기 변경만 감지 (기본값) | 패널 크기가 고정된 일반 캐러셀 |
true | 패널별 크기 변경도 감지, 자동 재계산 | 동적 콘텐츠, 이미지 로드, 아코디언 패널 |
상세 설명
observePanelResize 동작 원리
기본적으로 Flicking의 autoResize는 뷰포트(컨테이너) 요소의 크기 변경만 감지합니다. 패널 내부 콘텐츠가 바뀌어 패널 자체의 크기가 달라지더라도 Flicking은 이를 알 수 없습니다.
observePanelResize: true로 설정하면 각 패널 요소에도 ResizeObserver가 연결됩니다. 패널 크기가 변경되는 즉시 beforeResize / afterResize 이벤트가 발생하고 레이아웃이 재계산됩니다.
const flicking = new Flicking("#el", {
observePanelResize: true
// useResizeObserver: true (기본값이므로 생략 가능)
});
사용 시나리오
언제 사용하나요?
- 이미지가 포함된 패널: 이미지 로드 완료 후 실제 크기로 패널이 커질 때
- 아코디언/토글 패널: 사용자 인터랙션으로 패널 높이가 변할 때
- 동적 콘텐츠: API 응답 후 패널 내 콘텐츠가 추가되어 크기가 변할 때
adaptive: true와 함께: 뷰포트 높이가 활성 패널 높이에 맞춰 바뀌는 캐러셀에서 패널 내용이 동적으로 변할 때
성능 고려
observePanelResize: true는 모든 패널에 ResizeObserver를 연결하므로, 패널 수가 많을 때 약간의 오버헤드가 발생할 수 있습니다. 패널 크기가 고정된 일반 캐러셀에서는 기본값(false)을 유지하세요.
resizeOnContentsReady와의 차이
resizeOnContentsReady는 초기화 시 이미지/미디어 로드 완료를 한 번 기다리는 옵션입니다. observePanelResize는 초기화 이후에도 지속적으로 패널 크기를 관찰합니다. 용도가 다르므로 상황에 맞게 선택하세요.
관련 링크
관련 옵션
useResizeObserver: ResizeObserver 사용 여부 (의존 옵션)autoResize: 뷰포트 크기 변경 시 자동 재계산resizeOnContentsReady: 초기 콘텐츠 로드 완료 후 리사이즈adaptive: 뷰포트 높이 자동 조절
관련 데모
- Adaptive: 뷰포트 높이 자동 조절
- Auto Resize: 리사이즈 감지 방식 설정
- Resize Debounce: 리사이즈 호출 빈도 제어