본문으로 건너뛰기

Pagination

Reactive API의 currentPanelIndex, totalPanelCount, moveTo를 사용하여 캐러셀과 실시간으로 동기화되는 도트 페이지네이션 UI를 구현합니다.

import Flicking, { connectFlickingReactiveAPI } from "@egjs/flicking";
import "@egjs/flicking/dist/flicking.css";
import "./styles.css";

const flicking = new Flicking("#flick");
const reactiveAPI = connectFlickingReactiveAPI(flicking);

// Create pagination buttons
const pagination = document.querySelector(".pagination");
const buttons = [];

for (let i = 0; i < reactiveAPI.totalPanelCount; i++) {
  const btn = document.createElement("button");
  btn.className = `pagination-btn${i === 0 ? " active" : ""}`;
  btn.textContent = i + 1;
  btn.addEventListener("click", () => reactiveAPI.moveTo(i));
  buttons.push(btn);
  pagination.appendChild(btn);
}

// Update active button on index change
reactiveAPI.subscribe("currentPanelIndex", index => {
  buttons.forEach((btn, i) => {
    btn.classList.toggle("active", i === index);
  });
});

요약​

주요 API​

속성 / 메서드타입설명
currentPanelIndexnumber현재 활성화된 패널 인덱스
totalPanelCountnumber전체 패널 수
moveTo(i: number) => Promise특정 패널로 이동

동작​

상태도트 스타일
현재 패널활성화 (강조 표시)
다른 패널기본, 클릭하여 이동

상세 설명​

동작 원리​

  1. totalPanelCount를 기반으로 도트 버튼을 렌더링
  2. currentPanelIndex에 해당하는 도트를 강조 표시
  3. 도트 클릭 시 moveTo(index)를 호출하여 해당 패널로 이동
  4. 사용자가 드래그하여 새 패널로 이동하면 currentPanelIndex가 자동으로 업데이트되고 도트가 다시 동기화

관련 옵션​

  • align: "center": 중앙 정렬은 페이지네이션을 가장 직관적으로 느끼게 합니다.
  • circular: true: 순환 모드에서는 첫 번째와 마지막 패널이 연결되어 도트가 매끄럽게 순환합니다.

사용 시나리오​

이런 경우에 사용하세요
  • 배너 / 히어로 슬라이더 위치 표시기
  • 이미지 갤러리 페이지 표시기
  • 모바일 온보딩 단계 도트

관련 링크​

관련 API​

관련 데모​