2.5d-ui
GitHub
Web Component · Edu

<iso-layers>

학년이나 단계처럼 위아래 순서가 있는 판을 쌓고, 판마다 항목 블록을 올립니다. 한 층을 펼치면 위 층들이 들려 올라가 안쪽 블록이 가려지지 않습니다.

가상 예시 데이터이며 외부로 전송되지 않습니다. 학년·단원별 통계 예시입니다.

예시: 학년별 수학 성취기준 층 구조

판을 클릭하면 해당 층이 펼쳐지고(open), 다시 클릭하면 접힙니다. 키보드 화살표 키(위/아래: 층, 좌/우: 항목)로 자유롭게 탐색할 수 있습니다.

층 펼침과 키보드 내비게이션

iso-layers는 수직 위계와 항목별 세부 수치를 동시에 표현할 수 있는 최적의 구조를 제공합니다.

속성

속성형식의미
dataJSON 배열층들의 배열(Layer[]). 잘못된 형식이면 오류 문구를 표시합니다
open정수 (0 이상)현재 펼쳐진 층의 0-based 인덱스. 지정하지 않거나 유효하지 않으면 모든 층이 기본 높이로 닫힘
max숫자축척 최댓값. 생략 시 전체 항목 중 최댓값
unit숫자(px)기본 등각 단위(--iso-u). 기본 24
height-units숫자최댓값일 때의 블록 높이 단위. 기본 5
label문자열접근성 캡션(aria-label 및 숨김 표 caption)
renderercss | svg | auto렌더링 방식. 기본 auto

data 항목 (Layer)

키형식의미
k문자열 · 필수층 이름 (예: "3학년", "초급")
items배열 · 필수해당 층에 올라갈 항목 객체들의 배열

items 세부 항목

키형식의미
k문자열 · 필수항목 이름 (예: 단원명)
v0 이상 숫자 · 필수항목의 측정값 (예: 성취도%)
cCSS 색 · 선택항목 블록 색상

이벤트

판 또는 항목 블록을 누르거나 키보드로 선택하면 iso-select가 발생합니다. 판을 클릭한 경우 index: -1이 전달되어 해당 층의 펼침 상태가 토글됩니다.

document.querySelector("iso-layers").addEventListener("iso-select", (e) => {
  const { layer, index, item } = e.detail;
  if (index < 0) {
    console.log(`${layer}번 층 토글: ${item.k}`);
  } else {
    console.log(`${layer}번 층의 ${index}번 항목: ${item.k} (${item.v})`);
  }
});

빈 상태와 오류

데이터가 비어 있거나 올바르지 않으면 안내 메시지가 표시됩니다.

접근성