본문으로 건너뛰기

Carousel

circular, panelsPerView, align 옵션을 조합하여 다양한 캐러셀 UI를 구성합니다.

import Flicking from "@egjs/flicking";
import "@egjs/flicking/dist/flicking.css";
import "./styles.css";

const COLORS = ["#e74c3c", "#3498db", "#2ecc71", "#f39c12", "#9b59b6", "#1abc9c", "#e67e22", "#2980b9"];

function createPanels(containerId) {
  const camera = document.querySelector(`#${containerId} .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);
  });
}

createPanels("flick1");
createPanels("flick2");
createPanels("flick3");

new Flicking("#flick1", {
  circular: true,
  panelsPerView: 3,
  align: "prev"
});

new Flicking("#flick2", {
  circular: true,
  panelsPerView: 1,
  align: "center"
});

new Flicking("#flick3", {
  circular: false,
  panelsPerView: 3,
  align: "prev",
  bound: true
});

요약

주요 옵션

옵션타입기본값설명
circularbooleanfalse순환 모드
panelsPerViewnumber-1화면당 패널 수 (-1이면 비활성)
alignstring | number"center"패널 정렬 위치

조합별 비교

조합동작적합한 상황
circular + panelsPerView: 3 + align: "prev"3개씩 보이는 무한 순환상품 목록, 카드 캐러셀
circular + panelsPerView: 1 + align: "center"1개씩 중앙 정렬 무한 순환히어로 슬라이더, 배너
circular: false + panelsPerView: 3 + bound끝이 있는 3열 슬라이더유한 목록, 갤러리

상세 설명

circular + panelsPerView 조합

circular: truepanelsPerView를 함께 사용하면 지정된 수의 패널이 화면에 보이면서 무한 순환됩니다. 패널 너비는 100% / panelsPerView로 자동 계산됩니다.

align의 역할

  • "prev": 패널이 왼쪽 정렬 → 리스트형 캐러셀에 적합
  • "center": 현재 패널이 중앙 → 스포트라이트형에 적합

비순환 슬라이더

circular: false + bound: true로 설정하면 끝에서 빈 공간 없이 멈추는 일반 슬라이더가 됩니다.

연관 옵션

  • circularFallback과의 관계: 패널 수가 부족하여 순환이 불가능할 때 대체 동작 설정
  • bound와의 관계: circular: false일 때 bound: true로 빈 공간 방지
  • noPanelStyleOverride와의 관계: panelsPerView 사용 시 패널 너비 자동 설정을 끄고 CSS로 직접 제어 가능

사용 시나리오

언제 사용하나요?
  • 상품 캐러셀: circular + panelsPerView: 3~5 조합
  • 히어로 배너: circular + panelsPerView: 1 + align: "center" 조합
  • 이미지 갤러리: circular: false + panelsPerView: 3 + bound 조합

주의사항

주의
  • circular: true가 동작하려면 패널 총 너비가 뷰포트보다 커야 합니다. 패널이 부족하면 circularFallback 설정을 확인하세요.
  • panelsPerView를 설정하면 패널의 CSS width가 자동으로 오버라이드됩니다. CSS에서 별도로 width를 설정하면 충돌할 수 있습니다.

관련 링크

관련 옵션

관련 데모