본문으로 건너뛰기

Pagination

현재 패널 위치를 표시하는 페이지 인디케이터를 추가합니다. bullet, fraction, scroll 세 가지 타입을 지원합니다.

import Flicking from "@egjs/flicking";
import { Pagination } from "@egjs/flicking-plugins";
import "@egjs/flicking/dist/flicking.css";
import "@egjs/flicking-plugins/dist/pagination.css";
import "./styles.css";

const COLORS = ["#e74c3c", "#3498db", "#2ecc71", "#f39c12", "#9b59b6"];

const camera = document.querySelector(".flicking-camera");
COLORS.forEach((color, i) => {
  const panel = document.createElement("div");
  panel.className = "flicking-panel";
  panel.style.background = color;
  panel.textContent = i + 1;
  camera.appendChild(panel);
});

const flicking = new Flicking("#flick", {
  circular: true
});

flicking.addPlugins(new Pagination({ type: "bullet" }));

요약

주요 옵션

옵션타입기본값설명
type"bullet" | "fraction" | "scroll""bullet"인디케이터 표시 방식
parentElHTMLElement-인디케이터의 부모 요소. 기본적으로 .flicking-pagination 요소 사용

필수 CSS

import "@egjs/flicking-plugins/dist/pagination.css";

상세 설명

타입별 동작

타입설명
bullet각 패널에 대응하는 점(dot) 표시. 클릭으로 해당 패널로 이동
fraction현재/전체 형태의 숫자 표시 (예: 1/5)
scroll스크롤바 형태의 인디케이터

HTML 구조

페이지네이션 요소를 뷰포트 내부에 배치해야 합니다.

<div class="flicking-viewport">
<div class="flicking-camera">
<!-- 패널들 -->
</div>
<div class="flicking-pagination"></div>
</div>

프레임워크별 사용법

ReactViewportSlot을 사용합니다:

<Flicking plugins={plugins}>
{/* 패널들 */}
<ViewportSlot>
<div className="flicking-pagination"></div>
</ViewportSlot>
</Flicking>

Vue#viewport 슬롯을 사용합니다:

<Flicking :plugins="plugins">
<!-- 패널들 -->
<template #viewport>
<div class="flicking-pagination"></div>
</template>
</Flicking>

주의사항

주의
  • 반드시 @egjs/flicking-plugins/dist/pagination.css를 import해야 인디케이터가 올바르게 표시됩니다.
  • bullet 타입에서 패널 수가 많으면 점이 너무 많아질 수 있습니다. 이 경우 fraction이나 scroll 타입을 고려하세요.

관련 링크

관련 데모