본문으로 건너뛰기

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

관련 데모