pencere

모던하고 접근성을 갖춘 프레임워크 독립적인 이미지 라이트박스 — 순수 TypeScript, 런타임 의존성 0개, ESM.

MIT zero deps pure ESM WCAG 2.2 AA CDN Demo

라이브 갤러리 데모

썸네일을 클릭하면 뷰어가 열립니다. / 로 이미지 이동, + / - / 0 으로 줌, Esc 로 닫기. 이미지를 더블클릭하면 2배 줌.

키보드 단축키

동작
Esc뷰어 닫기
/ PageUp이전 이미지
/ PageDown다음 이미지
Home / End처음 / 마지막으로 이동
+ / -1.25배 줌 인 / 아웃
0줌 초기화

추가 기능 데모

RTL(오른쪽→왼쪽) 방향 전환

현재: ltr

해시 딥링크 (#p3 열기)

썸네일 → 라이트박스 모프 전환 (View Transition)

아래 이미지를 클릭하면 자연스러운 모프 애니메이션이 재생됩니다 (Chrome/Edge/Safari TP).

전체화면 모드

선언적 HTML 바인딩 (bindPencere)

아래 썸네일은 data-pencere 속성만으로 동작합니다.

동영상 / iframe / 커스텀 렌더러

플레이스홀더 크로스페이드

CDN 사용법

<!-- importmap으로 pencere 패키지 등록 -->
<script type="importmap">
{
  "imports": {
    "pencere": "https://cdn.jsdelivr.net/npm/pencere@0.3.0/dist/index.mjs"
  }
}
</script>

<!-- ESM으로 import -->
<script type="module">
  import { PencereViewer } from "pencere"

  const viewer = new PencereViewer({
    items: [
      { type: "image", src: "/a.jpg", alt: "이미지", width: 1600, height: 1067 },
    ],
    loop: true,
  })

  document.querySelector("#open").addEventListener("click", () => {
    viewer.open(0)
  })
</script>