Today's AntipatternAll Posts
ν…Œλ§ˆ
GitHubToday's AntipatternAll Posts

μ•ˆν‹°νŒ¨ν„΄μ„ 톡해 더 λ‚˜μ€ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 방법을 λ°°μ›Œλ³΄μ„Έμš”. κ°œλ°œμžλ“€μ΄ μ‹€μˆ˜ν•˜λŠ” νŒ¨ν„΄λ“€μ„ λΆ„μ„ν•˜κ³  κ°œμ„ λ°©μ•ˆμ„ μ œμ‹œν•©λ‹ˆλ‹€.

μ—°κ²°ν•˜κΈ°

Β© 2025 Smelly.dev All rights reserved.

June 30, 2025

πŸ–ΌοΈ `alt` 속성 λˆ„λ½ λ˜λŠ” 였용: 이미지 μ ‘κ·Όμ„±μ˜ 맹점

HTML
UX
μ›Ήν‘œμ€€
SEO/μ ‘κ·Όμ„±

Summary

alt 속성(λŒ€μ²΄ ν…μŠ€νŠΈ)은 μ‹œκ° μž₯μ•  μ‚¬μš©μž, 검색 μ—”μ§„, 그리고 이미지 λ‘œλ”© μ‹€νŒ¨ μ‹œ μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€. 의미 μžˆλŠ” μ΄λ―Έμ§€μ—λŠ” κ°„κ²°ν•˜κ³  μ •ν™•ν•œ μ„€λͺ…을 μ œκ³΅ν•˜κ³ , μž₯μ‹μš© μ΄λ―Έμ§€μ—λŠ” alt=""λ₯Ό μ‚¬μš©ν•˜μ—¬ μ›Ή μ ‘κ·Όμ„±κ³Ό SEOλ₯Ό ν–₯μƒμ‹œμΌœμ•Ό ν•©λ‹ˆλ‹€.

Why Wrong?

μ™œ 이 νŒ¨ν„΄μ΄ λ¬Έμ œμΈκ°€μš”?

alt 속성(λŒ€μ²΄ ν…μŠ€νŠΈ)은 λ‹¨μˆœνžˆ 이미지가 λ‘œλ“œλ˜μ§€ μ•Šμ•˜μ„ λ•Œ λ³΄μ΄λŠ” ν…μŠ€νŠΈ μ΄μƒμ˜ μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€. 이 속성을 λˆ„λ½ν•˜κ±°λ‚˜ 잘λͺ» μ‚¬μš©ν•˜λ©΄ λ‹€μŒκ³Ό 같은 μ‹¬κ°ν•œ 문제λ₯Ό μ΄ˆλž˜ν•©λ‹ˆλ‹€:

  1. μ›Ή μ ‘κ·Όμ„± μ €ν•΄ (슀크린 리더 μ‚¬μš©μž): μ‹œκ° μž₯μ• κ°€ μžˆλŠ” μ‚¬μš©μžλŠ” 슀크린 리더λ₯Ό 톡해 μ›Ή νŽ˜μ΄μ§€ μ½˜ν…μΈ λ₯Ό μ΄ν•΄ν•©λ‹ˆλ‹€. alt 속성이 μ—†κ±°λ‚˜ λΆ€μ μ ˆν•˜λ©΄, 슀크린 λ¦¬λ”λŠ” 이미지가 무엇을 λ‚˜νƒ€λ‚΄λŠ”μ§€ 전달할 수 μ—†μœΌλ―€λ‘œ, μ‚¬μš©μžλŠ” 이미지에 λ‹΄κΈ΄ μ€‘μš”ν•œ μ •λ³΄λ‚˜ λ¬Έλ§₯을 μ™„μ „νžˆ λ†“μΉ˜κ²Œ λ©λ‹ˆλ‹€. μ΄λŠ” μ›Ή μ‚¬μ΄νŠΈμ˜ 포괄성을 μ‹¬κ°ν•˜κ²Œ ν•΄μΉ©λ‹ˆλ‹€.

  2. SEO (검색 μ—”μ§„ μ΅œμ ν™”) 뢈리: 검색 μ—”μ§„ ν¬λ‘€λŸ¬λŠ” alt ν…μŠ€νŠΈλ₯Ό μ‚¬μš©ν•˜μ—¬ μ΄λ―Έμ§€μ˜ λ‚΄μš©μ„ νŒŒμ•…ν•©λ‹ˆλ‹€. μ μ ˆν•œ alt ν…μŠ€νŠΈκ°€ μ—†μœΌλ©΄ 검색 엔진이 이미지λ₯Ό μ œλŒ€λ‘œ μ΄ν•΄ν•˜κ³  μΈλ±μ‹±ν•˜κΈ° μ–΄λ €μ›Œμ§‘λ‹ˆλ‹€. μ΄λŠ” 이미지 검색 κ²°κ³Όλ‚˜ 전체 νŽ˜μ΄μ§€μ˜ 검색 μ—”μ§„ μˆœμœ„μ— 뢀정적인 영ν–₯을 λ―ΈμΉ  수 μžˆμŠ΅λ‹ˆλ‹€.

  3. 이미지 λ‘œλ”© μ‹€νŒ¨ μ‹œ λ¬Έλ§₯ 상싀: λ„€νŠΈμ›Œν¬ 문제, 경둜 였λ₯˜ λ“±μœΌλ‘œ 인해 이미지가 λ‘œλ“œλ˜μ§€ λͺ»ν–ˆμ„ λ•Œ, λΈŒλΌμš°μ €λŠ” κΉ¨μ§„ 이미지 μ•„μ΄μ½˜κ³Ό ν•¨κ»˜ alt ν…μŠ€νŠΈλ₯Ό ν‘œμ‹œν•©λ‹ˆλ‹€. alt ν…μŠ€νŠΈκ°€ μ—†κ±°λ‚˜ 의미 μ—†λŠ” λ‚΄μš©μ΄λΌλ©΄, μ‚¬μš©μžλŠ” 이미지가 μžˆμ–΄μ•Ό ν•  μžλ¦¬μ— 무엇이 μžˆμ—ˆλŠ”μ§€ μ „ν˜€ νŒŒμ•…ν•  수 μ—†μ–΄ ν˜Όλž€μ„ κ²ͺ게 λ©λ‹ˆλ‹€.

  4. μ½˜ν…μΈ μ˜ 의미 λΆ€μ‘±: alt 속성은 이미지가 μ „λ‹¬ν•˜λŠ” 정보λ₯Ό ν…μŠ€νŠΈ ν˜•νƒœλ‘œ λ³΄μ™„ν•˜μ—¬, μ½˜ν…μΈ μ˜ 전체적인 μ˜λ―Έμ™€ λ§₯락을 ν’λΆ€ν•˜κ²Œ λ§Œλ“­λ‹ˆλ‹€. alt 속성이 λΆ€μž¬ν•˜κ±°λ‚˜ 였용되면, 이 μ€‘μš”ν•œ 의미둠적 μ—°κ²° 고리가 λŠμ–΄μ Έ μ •λ³΄μ˜ 전달λ ₯이 μ•½ν•΄μ§‘λ‹ˆλ‹€.

alt 속성은 HTML ν‘œμ€€μ˜ ν•„μˆ˜μ μΈ 뢀뢄이며, λͺ¨λ“  μ‚¬μš©μžμ—κ²Œ λ™λ“±ν•œ 정보 μ ‘κ·Ό 기회λ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•œ 기본적인 μš”μ†Œμž…λ‹ˆλ‹€.

How to Fix?

μ–΄λ–»κ²Œ μˆ˜μ •ν•΄μ•Ό ν•˜λ‚˜μš”?

alt 속성을 μ˜¬λ°”λ₯΄κ²Œ μ‚¬μš©ν•˜μ—¬ μ΄λ―Έμ§€μ˜ 의미λ₯Ό 효과적으둜 μ „λ‹¬ν•˜κ³  μ›Ή 접근성을 ν–₯μƒμ‹œν‚€λŠ” 것은 맀우 μ€‘μš”ν•©λ‹ˆλ‹€. λ‹€μŒ κ°€μ΄λ“œλΌμΈμ„ λ”°λ₯΄μ„Έμš”:

  1. λͺ¨λ“  의미 μžˆλŠ” 이미지에 alt 속성 제곡: 이미지가 μ½˜ν…μΈ μ˜ 핡심적인 정보λ₯Ό μ „λ‹¬ν•˜κ±°λ‚˜ λ¬Έλ§₯을 μ œκ³΅ν•œλ‹€λ©΄, λ°˜λ“œμ‹œ κ°„κ²°ν•˜λ©΄μ„œλ„ μ •ν™•ν•˜κ²Œ 이미지λ₯Ό μ„€λͺ…ν•˜λŠ” alt ν…μŠ€νŠΈλ₯Ό 포함해야 ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, alt="메인 νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜λŠ” 둜고" λ³΄λ‹€λŠ” alt="νšŒμ‚¬ 둜고"κ°€ 더 μ μ ˆν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    • λ‚˜μœ 예: <img src="dog.jpg" alt="" /> (κ°•μ•„μ§€ 사진인데 빈 κ°’)
    • 쒋은 예: <img src="dog.jpg" alt="μž”λ””λ°­μ—μ„œ λ›°μ–΄λ…ΈλŠ” 골든 λ¦¬νŠΈλ¦¬λ²„" />
  2. μž₯μ‹μš© μ΄λ―Έμ§€μ—λŠ” alt="" μ‚¬μš©: 이미지가 μˆœμ „νžˆ μ‹œκ°μ μΈ λͺ©μ (예: ν…Œλ‘λ¦¬, λ°°κ²½ 이미지, ꡬ뢄선 λ“±)으둜 μ‚¬μš©λ˜λ©° μ½˜ν…μΈ μ— μ–΄λ–€ 정보도 μΆ”κ°€ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, alt="" (빈 alt 속성)으둜 μ²˜λ¦¬ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λŠ” 슀크린 리더가 ν•΄λ‹Ή 이미지λ₯Ό κ±΄λ„ˆλ›°λ„λ‘ μ§€μ‹œν•˜μ—¬ λΆˆν•„μš”ν•œ λ°˜λ³΅μ΄λ‚˜ ν˜Όλž€μ„ λ°©μ§€ν•©λ‹ˆλ‹€.

    • λ‚˜μœ 예: <img src="spacer.gif" alt="μŠ€νŽ˜μ΄μ„œ 이미지" /> (μž₯μ‹μš©μΈλ° ν…μŠ€νŠΈκ°€ 있음)
    • 쒋은 예: <img src="line.png" alt="" /> (μž₯μ‹μš© ꡬ뢄선 이미지)
  3. κ°„κ²°ν•˜κ³  λͺ…ν™•ν•˜κ²Œ μž‘μ„±: alt ν…μŠ€νŠΈλŠ” μ΄λ―Έμ§€μ˜ 핡심 λ‚΄μš©μ„ μ „λ‹¬ν•˜λ˜, λΆˆν•„μš”ν•œ 단어λ₯Ό ν”Όν•˜κ³  κ°„κ²°ν•˜κ²Œ μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€. "이미지", "사진"κ³Ό 같은 λ‹¨μ–΄λŠ” 슀크린 리더가 이미지λ₯Ό 읽을 λ•Œ μžλ™μœΌλ‘œ μ•Œλ €μ£Όλ―€λ‘œ μ€‘λ³΅ν•΄μ„œ μž‘μ„±ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

  4. λ³΅μž‘ν•œ 이미지 처리: κ·Έλž˜ν”„, 차트, λ‹€μ΄μ–΄κ·Έλž¨ λ“± μ •λ³΄λŸ‰μ΄ λ§Žμ€ μ΄λ―Έμ§€μ˜ 경우, alt μ†μ„±μ—λŠ” κ°„λž΅ν•œ μš”μ•½μ΄λ‚˜ 제λͺ©μ„ λ„£κ³ , aria-describedby 속성을 μ‚¬μš©ν•˜μ—¬ 이미지에 λŒ€ν•œ 더 μžμ„Έν•œ μ„€λͺ…을 μ œκ³΅ν•˜λŠ” λ³„λ„μ˜ ν…μŠ€νŠΈ λΈ”λ‘μ΄λ‚˜ 링크λ₯Ό μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜¬λ°”λ₯Έ alt 속성 μ‚¬μš©μ€ λͺ¨λ“  μ‚¬μš©μžμ—κ²Œ 포괄적인 μ›Ή κ²½ν—˜μ„ μ œκ³΅ν•˜λŠ” κ°€μž₯ 기본적인 단계 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.

Before Code (Bad)

<!-- alt 속성 λˆ„λ½: 슀크린 리더가 이미지λ₯Ό κ±΄λ„ˆλ›°κ±°λ‚˜ '이미지'라고만 읽을 수 μžˆμŠ΅λ‹ˆλ‹€. -->
<img src="./hero-image.jpg" />

<!-- alt 속성 였용 (의미 μ—†λŠ” ν…μŠ€νŠΈ): 정보 전달이 λΆˆλΆ„λͺ…ν•©λ‹ˆλ‹€. -->
<img src="./product-icon.png" alt="μ•„μ΄μ½˜ 이미지" />

<!-- alt 속성 였용 (μž₯μ‹μš© 이미지에 λΆˆν•„μš”ν•œ ν…μŠ€νŠΈ): 슀크린 리더가 λΆˆν•„μš”ν•œ 정보λ₯Ό 읽게 ν•©λ‹ˆλ‹€. -->
<img src="./decorative-line.svg" alt="ν™”λ©΄ ꡬ뢄선" />

After Code (Good)

<!-- 의미 μžˆλŠ” 이미지: 이미지λ₯Ό μ •ν™•νžˆ μ„€λͺ…ν•˜λŠ” alt ν…μŠ€νŠΈλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. -->
<img src="./hero-image.jpg" alt="어린아이듀이 μ›ƒμœΌλ©° 즐겁게 λ›°μ–΄λ…ΈλŠ” λͺ¨μŠ΅" />

<!-- 의미 μžˆλŠ” 이미지: μ œν’ˆμ˜ κΈ°λŠ₯을 λͺ…ν™•νžˆ λ‚˜νƒ€λ‚΄λŠ” alt ν…μŠ€νŠΈλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. -->
<img src="./product-icon.png" alt="μƒˆλ‘œμš΄ λ©”μ‹œμ§€ μ•Œλ¦Όμ„ λ‚˜νƒ€λ‚΄λŠ” μ’… λͺ¨μ–‘ μ•„μ΄μ½˜" />

<!-- μž₯μ‹μš© 이미지: alt 속성을 빈 λ¬Έμžμ—΄λ‘œ μ²˜λ¦¬ν•˜μ—¬ 슀크린 리더가 κ±΄λ„ˆλ›°λ„λ‘ ν•©λ‹ˆλ‹€. -->
<img src="./decorative-line.svg" alt="" />

You Might Also Like

`<img>` μš”μ†Œμ˜ `alt` 속성에 λŒ€ν•œ MDN λ¬Έμ„œμž…λ‹ˆλ‹€. 이 μ†μ„±μ˜ λͺ©μ , μ˜¬λ°”λ₯Έ μ‚¬μš©λ²•, μ ‘κ·Όμ„± κ΄€λ ¨ 지침을 μƒμ„Ένžˆ μ„€λͺ…ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-alt
W3C WAI(Web Accessibility Initiative)μ—μ„œ μ œκ³΅ν•˜λŠ” 이미지 λŒ€μ²΄ ν…μŠ€νŠΈ μž‘μ„± κ°€μ΄λ“œλΌμΈμž…λ‹ˆλ‹€. λ‹€μ–‘ν•œ 이미지 μœ ν˜•μ— λ”°λ₯Έ `alt` ν…μŠ€νŠΈ μž‘μ„± μ „λž΅μ„ μ œκ³΅ν•˜μ—¬ μ ‘κ·Όμ„± λͺ¨λ²” 사둀λ₯Ό μ΄ν•΄ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€.
https://www.w3.org/WAI/tutorials/images/