HTML popover 속성 — 완전 심층 분석

발행: (2026년 3월 19일 AM 03:32 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

popover 속성은 다음과 같은 가벼운 오버레이를 만들 수 있는 최신 내장 방식입니다:

  • 드롭다운
  • 메뉴
  • 툴팁
  • 컨텍스트 패널
  • 미니 다이얼로그

이는 네이티브 HTML이며, 의미하는 바는:

  • JavaScript 라이브러리 불필요
  • ARIA 해킹 불필요
  • 포털 로직 불필요
  • 복잡한 포커스 관리가 대부분 자동 처리

Open UI / HTML Living Standard의 일부로 추가되었으며, 현재 최신 Chromium, Safari, Firefox 버전에서 지원됩니다.

기본 개념

popover는 선언적 속성을 통해 표시/숨김을 제어할 수 있는 숨겨진 요소입니다. 다음과 같이 선언합니다:

<div popover>
  Hello Popover
</div>

이 요소는 기본적으로 숨겨져 있습니다. 표시하려면 버튼에 연결합니다:

<button popovertarget="myPopover">Open</button>

그게 전부—JavaScript가 필요 없습니다.

내부 동작 방식

popover가 열리면 display: none이 해제되고, 최상위 레이어(포털처럼)로 이동하여 모든 스태킹 컨텍스트 위에 렌더링됩니다. z-index와는 독립적으로 동작하며, overflow: hidden에 의해 잘리지 않습니다.

popover 속성 값

popover="auto" (또는 단순히 popover – 기본값)

동작

  • 외부를 클릭하면 닫힘
  • Esc 키를 누르면 닫힘
  • 한 번에 하나의 자동 popover만 열 수 있음

메뉴, 드롭다운, 툴팁, 컨텍스트 패널에 이상적입니다.

popover="manual"

동작

  • 자동으로 닫히지 않음
  • JavaScript를 통해 수동으로 닫아야 함
  • 여러 popover를 동시에 열 수 있음

맞춤형 열기/닫기 로직이 필요하거나 복잡한 UI를 구축할 때 사용합니다.

Popover 트리거 방법

선언적 트리거

<div popover id="myPopover">
  <button popovertarget="myPopover">Open</button>
  <div>Content</div>
</div>

토글 동작 제어

popovertargetaction 속성을 사용해 동작을 지정할 수 있습니다(toggle이 기본값이며, show 또는 hide 가능):

<button popovertarget="myPopover" popovertargetaction="show">Open</button>
0 조회
Back to Blog

관련 글

더 보기 »

왜 BEM 네스팅이 Tailwind v4에서 깨지는가

오늘은 특정 CSS 스타일이 적용되지 않는 이유를 디버깅하는 데 시간을 좀 보냈어요. 알고 보니 Tailwind v4가 조용히 Tailwind v3에서 작동하던 무언가를 깨뜨렸더라고요. 원본…