본문으로 건너뛰기

Perspective

패널의 위치에 따라 3D 원근 회전 및 크기 변환 효과를 적용합니다.

import Flicking from "@egjs/flicking";
import { Perspective } from "@egjs/flicking-plugins";
import "@egjs/flicking/dist/flicking.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,
  align: "center"
});

flicking.addPlugins(new Perspective({ rotate: 1, perspective: 1000 }));

요약

주요 옵션

옵션타입기본값설명
rotatenumber1회전 강도. 양수면 오른쪽 패널이 안쪽으로, 음수면 바깥쪽으로 회전
scalenumber2크기 변환 강도
perspectivenumber1000CSS perspective 값 (px). 작을수록 왜곡이 강해짐

상세 설명

동작 원리

Perspective 플러그인은 각 패널의 가시 비율(visible ratio)을 기반으로 rotateYscale 변환을 자동 적용합니다. 중앙에 가까운 패널은 정면을, 멀어질수록 회전된 모습을 보여줍니다.

사용법

import { Perspective } from "@egjs/flicking-plugins";

// 기본 사용
flicking.addPlugins(new Perspective({ rotate: 1, perspective: 1000 }));

// 강한 왜곡
flicking.addPlugins(new Perspective({ rotate: -1, scale: 2, perspective: 600 }));

주의사항

주의
  • circular: true와 함께 사용하면 끊김 없는 3D 회전 효과를 구현할 수 있습니다.
  • 패널이 너무 적으면 순환 시 빈 공간이 생길 수 있으므로 최소 4~5개 이상의 패널을 권장합니다.

관련 링크

관련 데모