Accordion

Accordion

여러 섹션을 접었다 펼 수 있는 아코디언 컴포넌트입니다. FAQ·설정·필터 패널 등에 사용하며, aria-expanded · aria-controls로 접근성을 보장합니다.

기본

FAQ처럼 항목 사이 간격이 있는 accordion_card 스킨입니다. 한 번에 하나의 패널만 열리며(단일 모드), 화살표 키로 트리거 간 포커스를 이동할 수 있습니다.

수령 후 7일 이내 마이페이지에서 신청할 수 있습니다. 단순 변심 반품 시 왕복 배송비가 부과됩니다.

다중 열기

data-accordion-multiple을 지정하면 여러 패널을 동시에 펼칠 수 있습니다.

이메일·푸시 알림 수신 여부를 설정합니다.

프로필 공개 범위와 데이터 다운로드를 관리합니다.

플러시

accordion_flush로 외곽 테두리 없이 구분선만 표시합니다. 사이드바·설정 목록에 적합합니다.

언어, 시간대, 테마 등 기본 환경 설정입니다.

보더

accordion_bordered로 항목을 한 덩어리로 붙입니다. 설정·목록형 UI에 적합합니다.

이메일·푸시 알림 수신 여부를 설정합니다.

카드

accordion_card로 각 항목을 독립 카드로 분리합니다. 대시보드·위젯 그룹에 사용합니다.

목표, 일정, 이해관계자 정보를 요약합니다.

보조 정보

accordion_extra로 배지·메타 텍스트를 트리거 오른쪽에 배치합니다.

답변이 필요한 고객 문의 3건이 있습니다.

비활성

is-disabled 클래스와 함께 트리거가 비활성화됩니다.

누구나 열람할 수 있는 가이드 문서입니다.

크기

accordion_sm · accordion_lg로 트리거와 본문 패딩을 조절합니다.

작은 아코디언 — 좁은 패딩.

큰 아코디언 — 넓은 패딩과 큰 글자.

슬라이드

data-effect="slide"로 펼침·접힘 시 높이 슬라이드 애니메이션을 적용합니다. 닫힌 패널은 hidden으로 숨기고, 토글 시에만 높이를 애니메이션합니다.

평일 기준 2~3일 이내 출고됩니다. 패널을 열고 닫을 때 높이가 부드럽게 전환됩니다.

마크업

루트에 data-accordion을 지정하면 클릭·키보드 동작이 자동으로 연결됩니다. 헤딩은 role="heading" · aria-level을 사용합니다. 슬라이드 효과는 data-effect="slide"를 추가합니다.

<div class="accordion accordion_bordered" data-accordion>
  <div class="accordion_item is-open">
    <div class="accordion_heading" role="heading" aria-level="3">
      <button type="button" class="btn btn_text accordion_trigger" id="acc-1"
        aria-expanded="true" aria-controls="acc-panel-1">
        <span class="accordion_label">제목</span>
        <svg class="accordion_icon" …></svg>
      </button>
    </div>
    <div class="accordion_panel" id="acc-panel-1"
      role="region" aria-labelledby="acc-1">
      <div class="accordion_content"><p>본문</p></div>
    </div>
  </div>
</div>

<!-- 여러 패널 동시 열기 -->
<div class="accordion accordion_bordered" data-accordion data-accordion-multiple>…</div>

<!-- 슬라이드 효과 -->
<div class="accordion accordion_card" data-accordion data-effect="slide">…</div>

클래스 · 속성

Nuxt와 Next 컴포넌트가 렌더하는 OOCSS 클래스·상태·접근성 속성입니다. HTML에서는 아래 항목을 직접 조합하고 data-accordion으로 동작을 연결합니다.

이름 설명
accordion루트 구조 클래스
accordion_bordered외곽 테두리로 항목을 한 덩어리로 붙인 스킨
accordion_flush구분선만 있는 플러시 스킨
accordion_card항목 사이 간격·독립 카드 스킨 (FAQ 기본 예시)
accordion_sm · accordion_lg크기 변형
accordion_item · accordion_trigger · accordion_panel내부 파트
accordion_headingrole="heading" aria-level="3" 헤딩 래퍼
accordion_label · accordion_extra · accordion_icon트리거 파트
accordion_content패널 본문 래퍼
data-accordionHTML 마크업 JS 초기화 대상
data-accordion-multipleHTML 마크업 다중 열기 허용
data-effect="slide"펼침·접힘 높이 슬라이드 애니메이션
is-open · is-disabled상태 클래스
aria-expanded · aria-controls트리거의 열림 상태와 연결된 패널 ID
disabled · aria-disabled비활성 트리거 상태. 포커스 이동과 토글 대상에서 제외
role="heading" · aria-level트리거를 감싸는 논리적 헤딩과 문서 계층
role="region" · aria-labelledby패널 영역과 해당 트리거의 접근 가능한 이름 연결
hidden · inert · aria-hidden닫힌 패널과 슬라이드 전환 중 콘텐츠 노출·포커스 차단
Enter · Space네이티브 button 동작으로 현재 항목 열기·닫기
ArrowDown · ArrowUp · Home · End비활성 항목을 제외한 트리거 간 순환·처음·끝 포커스 이동
data-rippleAccordionItem 트리거의 클릭 파장 활성
data-ripple="false" · data-no-ripple해당 트리거 또는 Accordion 하위 전체 클릭 파장 비활성

디자인 토큰

토큰 기본값 설명
--accordion-font-sizevar(--text-size-sm)기본(md) 본문 크기
--accordion-trigger-font-weight · --accordion-trigger-gap600 · var(--space-sm)트리거 타이포·간격
--accordion-trigger-padding-y · --accordion-trigger-padding-x0.875rem · var(--space-lg)트리거 패딩(md)
--accordion-content-font-sizevar(--text-size-sm)콘텐츠 글자 크기
--accordion-content-padding-y · --accordion-content-padding-xvar(--space-lg) · var(--space-lg)콘텐츠 상하·좌우 패딩
--accordion-icon-size1rem펼침 아이콘(md)
--accordion-slide-duration · --accordion-slide-easing0.28s · ease슬라이드 전환
--accordion-card-gap0카드형 아코디언 항목 간격
--accordion-card-trigger-bgvar(--color-surface-raised)카드형 트리거 배경
--accordion-font-size-sm · --accordion-trigger-padding-y-sm · --accordion-trigger-padding-x-smvar(--text-size-xs) · 0.625rem · var(--space-md)sm 크기
--accordion-content-padding-y-sm · --accordion-content-padding-x-sm · --accordion-icon-size-smvar(--space-md) · var(--space-md) · 0.875remsm 본문 패딩·아이콘
--accordion-font-size-lg · --accordion-trigger-padding-y-lg · --accordion-trigger-padding-x-lgvar(--text-size-base) · 1rem · var(--space-xl)lg 크기
--accordion-content-padding-y-lg · --accordion-content-padding-x-lg · --accordion-icon-size-lgvar(--space-xl) · var(--space-xl) · 1.125remlg 본문 패딩·아이콘