코드에서 position: absolute;를 사용하는 주된 이유는 요소를 완전히 숨기면서도 레이아웃에 영향을 주지 않도록 하기 위함입니다. 여러 가지 숨기는 방법 중에서도 특히 스크린 리더(화면 낭독 프로그램)에서는 내용을 읽을 수 있도록 보장하는 방식입니다.
🔍 position: absolute;의 역할
- 레이아웃에서 완전히 제거:
position: absolute;는 요소를 일반 문서 흐름(normal flow)에서 제거합니다. 따라서 이 요소는 다른 요소의 위치나 크기에 전혀 영향을 미치지 않습니다.display: none;이나visibility: hidden;도 비슷한 효과를 내지만, 스크린 리더 접근성 측면에서 차이가 있습니다. width: 0; height: 0;과의 시너지: 절대 위치(Absolute Positioning)와 크기를 0으로 설정하는 것을 조합하면, 요소는 차지하는 공간이 완전히 사라지지만 DOM에는 존재하는 상태가 됩니다. 이는 접근성에 매우 중요합니다.
📌 다른 속성들과의 협력 (은닉 메커니즘)
이 코드는 여러 속성을 조합하여 "시각적으로는 보이지 않지만, 보조 기기에서는 접근 가능"한 상태를 만듭니다. 각 속성의 역할은 다음과 같습니다.
width: 0; height: 0;: 요소의 실제 차지 영역을 없앱니다.overflow: hidden;: 만약 내용이 있다면, 보이지 않도록 합니다.line-height: 0;: 내부 텍스트의 줄 간격을 제거합니다.text-indent: -9999px;: (가장 중요한 속성) 텍스트를 화면 밖으로 밀어내어 시각적으로는 보이지 않게 만듭니다. 하지만 스크린 리더는 이 텍스트를 인식하고 읽어줍니다.position: absolute;: 이 모든 작업의 기초가 되어 요소가 문서 흐름을 벗어나게 함으로써, 다른 요소의 레이아웃을 방해하지 않도록 합니다.
🤔 왜 display: none;이나 visibility: hidden;을 쓰지 않나요?
이것이 가장 중요한 차이점입니다.
| 방법 | 시각적 표현 | 스크린 리더 접근성 | 레이아웃 영향 |
|---|---|---|---|
display: none; |
숨김 | 읽지 않음 (접근성 불량) | 영향을 주지 않음 |
visibility: hidden; |
숨김 | 읽지 않음 (접근성 불량) | 공간은 차지함 |
| 이 코드 조합 | 숨김 | 읽음 (접근성 양호) | 영향을 주지 않음 |
✅ 결론: position: absolute;가 꼭 필요한 이유
이 특정 코드 조합의 목적이 "접근성을 보존하면서 시각적으로만 요소를 숨기는 것" 이기 때문입니다.
- 접근성 보장:
display: none;이나visibility: hidden;을 사용하면 스크린 리더가 내용을 읽지 못합니다. 하지만 이 방법은 텍스트를 화면에서만 밀어내므로 스크린 리더가 내용을 인식합니다. - 레이아웃 무간섭:
position: absolute;는 요소를 문서 흐름에서 제거하여 레이아웃에 영향을 주지 않는display: none;의 장점은 유지합니다. - 완전한 은닉:
width: 0,height: 0등 다른 속성들과 결합되어 시각적으로는 완전히 보이지 않게 만듭니다.
따라서, 스크린 리더 사용자에게는 내용을 제공해야 하지만 (예: "메뉴", "검색", "주요 콘텐츠로 건너뛰기" 링크), 시각적인 디자인에서는 보이지 않아야 할 때 이 방법을 주로 사용합니다. 이는 웹 접근성(Web Accessibility)을 준수하는 중요한 기법입니다.
'프로그래머로의 여정' 카테고리의 다른 글
| CSS로 텍스트 줄 수 제한하기 (한줄, 두줄, 세줄 효과) (0) | 2025.08.31 |
|---|---|
| CSS의 position: relative와 position: absolute의 차이점 (0) | 2025.08.30 |
| CSS에서 text-align: center와 margin: 0 auto (0) | 2025.08.28 |
| <a>와 <link> in html (0) | 2025.08.26 |
| HTML/CSS에서 id나 class 이름을 짓는 규칙, BEM 방법론 (0) | 2025.08.22 |