0Pricing
HTML Academy · 강의

hidden 속성

hidden 불리언 속성으로 요소의 표시 여부를 전환합니다.

hidden 속성은(는) CoddyKit의 무료 HTML Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 HTML Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. HTML Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

hidden이란 무엇인가요?

hidden 속성은 요소를 보이지 않게 만들고 접근성 트리에서 제거합니다:

<p hidden>This paragraph is hidden.</p>
<!-- Equivalent to: display: none in CSS -->
<!-- The element is in the DOM but not rendered -->
<!-- Screen readers do not announce hidden elements -->

hidden은 불리언 속성입니다

불리언 속성은 존재하면 참이고 없으면 거짓이며, 값이 필요하지 않습니다:

<!-- All of these are equivalent: -->
<div hidden>Content</div>
<div hidden="">Content</div>
<div hidden="hidden">Content</div>

<!-- Remove with JavaScript: -->
element.removeAttribute('hidden');

<!-- Or set: -->
element.setAttribute('hidden', '');

hidden, display:none, visibility:hidden 비교

요소를 숨기는 세 가지 방법입니다:

/* hidden attribute = display:none */
/* Element is removed from flow, invisible to AT */

/* visibility: hidden */
/* Element occupies space but is invisible */
/* Still read by some screen readers */

/* opacity: 0 */
/* Element occupies space, invisible, still interactive */
/* Still read by screen readers */

/* Hidden attribute is the simplest for fully hiding content */

JavaScript로 가시성 전환하기

hidden 속성을 추가하거나 제거하여 가시성을 제어합니다:

const modal = document.getElementById('modal');

// Show:
modal.removeAttribute('hidden');
// or:
modal.hidden = false;

// Hide:
modal.setAttribute('hidden', '');
// or:
modal.hidden = true;

// Toggle:
modal.toggleAttribute('hidden');

CSS는 hidden을 재정의할 수 있습니다

CSS의 display가 hidden 속성을 재정의할 수 있으므로 주의해야 합니다:

/* This makes hidden elements visible again: */
[hidden] {
  display: block !important;
}

/* Do not do this unless you have a very specific reason */

/* The hidden attribute should be trusted as the source of truth for visibility */

hidden과 aria-hidden 비교

숨김에는 서로 다른 두 가지 유형이 있습니다:

  • hidden — 시각적으로 숨겨지고 AND 접근성 트리에서도 제거됩니다
  • aria-hidden="true" — 접근성 트리에서만 숨겨지고 시각적으로는 계속 렌더링됩니다
<!-- hidden: nothing sees it -->
<div hidden>Completely hidden</div>

<!-- aria-hidden: visual users see it, screen readers skip it -->
<span aria-hidden="true">★★★★☆</span>
<span class="sr-only">4 out of 5 stars</span>

표시 및 숨기기 패턴

hidden을 사용한 일반적인 표시 및 숨기기 전환입니다:

<button
  aria-expanded="false"
  aria-controls="menu"
  id="menu-btn"
>Menu</button>

<ul id="menu" hidden>
  <li><a href="/">Home</a></li>
  <li><a href="/about">About</a></li>
</ul>

<script>
document.getElementById('menu-btn').addEventListener('click', function() {
  const menu = document.getElementById('menu');
  const expanded = this.getAttribute('aria-expanded') === 'true';
  menu.hidden = expanded;
  this.setAttribute('aria-expanded', !expanded);
});
</script>

until-found 값(새 기능)

HTML 5.1 이상에서는 검색할 수 있지만 접힌 콘텐츠를 위해 hidden="until-found"를 도입했습니다:

<details>
  <summary>Read More</summary>
  <div hidden="until-found" id="more-content">
    <p>This content is collapsed but findable by Ctrl+F.</p>
  </div>
</details>
<!-- hidden="until-found" hides visually but allows browser Ctrl+F to find and reveal it -->
<!-- Only supported in Chromium-based browsers currently -->

화면 낭독기 동작

hidden 속성은 콘텐츠를 보조 기술에서 완전히 숨깁니다:

  • 화면 낭독기는 숨겨진 요소를 건너뜁니다
  • Tab 포커스가 숨겨진 요소 안으로 들어가지 않습니다
  • 숨겨졌을 때 탐색되지 않아야 하는 모달, 오프캔버스 메뉴, 조건부 패널에 적합합니다

일반적인 사용 사례

hidden 속성을 사용하는 경우입니다:

  • 열기 전의 모달 대화 상자
  • 탭 패널 콘텐츠(활성 탭의 패널은 표시하고 나머지는 숨김)
  • 단계별 마법사(현재 단계 표시)
  • 점진적 공개(클릭하면 추가 정보 표시)
  • 로드 상태(로드 스피너를 콘텐츠로 교체)

숨김 상태 유지하기

페이지를 다시 불러와도 가시성 상태를 유지하려면 localStorage를 사용합니다:

const panel = document.getElementById('info-panel');
const key = 'info-panel-visible';

// Restore state:
if (localStorage.getItem(key) === 'false') {
  panel.hidden = true;
}

// On toggle:
document.getElementById('toggle-btn').addEventListener('click', () => {
  panel.hidden = !panel.hidden;
  localStorage.setItem(key, !panel.hidden);
});

빠른 확인

hidden 속성과 aria-hidden의 차이점은 무엇인가요?

복습: hidden 속성

hidden 속성의 핵심 내용입니다:

  • hidden — display: none과 동일합니다
  • 불리언 속성: 존재하면 숨겨지고, 없으면 표시됩니다
  • 접근성 트리에서 제거됩니다(visibility: hidden과 다름)
  • element.hidden = true/false로 전환합니다
  • aria-hidden="true"는 AT에서만 숨기고 시각적 렌더링은 유지합니다

자주 묻는 질문

“hidden 속성” 강의는 무료인가요?

네 — “hidden 속성” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 HTML Academy 강의 전체를 잠금 해제할 수 있습니다. HTML Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“hidden 속성”에서 뭘 배우나요?

hidden 불리언 속성으로 요소의 표시 여부를 전환합니다. 브라우저에서 직접 실행하는 실습 코드로 HTML Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

HTML Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 HTML Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“hidden 속성” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 HTML Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 HTML Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. id, class, style 및 title
  2. hidden 속성
  3. tabindex와 accesskey
  4. 사용자 정의 데이터 속성 data-*
← HTML Academy(으)로 돌아가기