πŸͺ[IR]μ›Ή 접근성을 ν–₯상을 μœ„ν•œ μ μ ˆν•œ λŒ€μ²΄ν…μŠ€νŠΈ μ‚½μž… μž‘μ—…(feat. alt,aria-label)

Yewon JeongΒ·2023λ…„ 4μ›” 6일
1

❗사싀, μŠ¬νŽΈμƒ μ„œλΉ„μŠ€ νŠΉμ„±μƒ(편의점 근무자λ₯Ό μœ„ν•œ 근무관리 μ„œλΉ„μŠ€) μŠ€ν¬λ¦°λ¦¬λ”κΈ°κ°€ μ„œλΉ„μŠ€ νŽ˜μ΄μ§€λ₯Ό μ–΄λ–»κ²Œ μ½λŠ”μ§€κΉŒμ§€λŠ” νšŒμ‚¬(특히 μ‹œκ°„μ— 쫓겨 μ‚¬λŠ” μŠ€νƒ€νŠΈμ—…!)μ—μ„œ κ°œλ°œν•˜λŠ” μƒν™©μ΄μ—ˆλ‹€λ©΄ μ†”μ§νžˆ 크게 정성을 κΈ°μšΈμ΄μ§€ μ•Šμ„ 것 κ°™λ‹€. κ·ΈλŸ¬λ‚˜ 이것은 λ‚˜μ˜ 곡뢀λ₯Ό μœ„ν•œ μ‚¬μ΄λ“œ ν”Œμ μ΄λ―€λ‘œ 이미지에 μ μ ˆν•œ λŒ€μ²΄ν…μŠ€νŠΈ(alt attr)λ₯Ό μž‘μ„±ν•΄μ£ΌλŠ” μ—°μŠ΅μ„ ν•΄λ³΄μ•˜λ‹€.

μ„œλΉ„μŠ€ URL ->Β https://www.wise24life.site

πŸ§μ›Ή μ ‘κ·Όμ„± μ™œ μ§€μΌœμ•Ό ν•˜μ§€?

μ„Έμƒμ—λŠ” λ‹€μ–‘ν•œ μ‚¬λžŒλ“€μ΄ μ‘΄μž¬ν•œλ‹€. λˆ„κ΅°κ°€λŠ” 눈이 μ•ˆλ³΄μ΄κ±°λ‚˜, κ·€κ°€ μ•ˆλ“€λ¦¬κ±°λ‚˜, μ†λ°œμ„ 자유둭게 움직일 수 μ—†λŠ” λ“±μ˜ 이유둜 νŠΉλ³„ν•œ 보쑰기ꡬ(슀크린 리더기,점자 정보 단말기 λ“±)λ₯Ό λ™λ°˜ν•˜μ—¬ μ›Ήμ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•˜κ³ μž ν•œλ‹€. λ‹€μ–‘ν•œ λ²”μ£Όμ˜ μ‚¬λžŒλ“€μ„ ν¬κ΄„ν•˜λŠ” λŒ€ν˜•μ„œλΉ„μŠ€, 예λ₯Ό λ“€μ–΄ 검색 ν¬ν„Έμ΄λ‚˜ κΈˆμœ΅μ„œλΉ„μŠ€, λ˜λŠ” μ „μžμ •λΆ€μ„œλΉ„μŠ€μ™€ 같은 μ„œλΉ„μŠ€λ“€μ€ 삢을 μ˜μœ„ν•˜κΈ° μœ„ν•œ ν•„μˆ˜ μ„œλΉ„μŠ€ μ΄λ―€λ‘œ λˆ„κ΅¬λ‚˜ μ‚¬μš©ν•  수 있게 λ§Œλ“€μ–΄μ Έμ•Ό ν•œλ‹€.(λ²•μœΌλ‘œλ„ λͺ…μ‹œλœ λΆ€λΆ„μž„) 이λ₯Ό μœ„ν•œ 방법듀 쀑 ν•˜λ‚˜κ°€ μ›Ή μ ‘κ·Όμ„± μ€€μˆ˜μ΄λ‹€. 이 ν¬μŠ€νŒ…μ—μ„œλŠ” ν•œκ΅­ν˜• μ›Ή μ ‘κ·Όμ„± 지침인 KWCAC(Korean Web Content Accessibility Guidelines)에도 λͺ…μ‹œ λ˜μ–΄μžˆλŠ” ν…μŠ€νŠΈκ°€ μ•„λ‹Œ μ½˜ν…μΈ μ— λŒ€ν•˜μ—¬ μ μ ˆν•œ λŒ€μ²΄ ν…μŠ€νŠΈλ₯Ό κΈ°μž… 에 κ΄€ν•œ 뢀뢄을 닀뀄볼 것이닀.


μΆ”κ°€μ μœΌλ‘œ μ›Ή μ ‘κ·Όμ„± ν–₯상을 μœ„ν•΄μ„œλŠ” 신체적인 μž₯μ•  여뢀와 관계없이 μ‚¬μš©μžμ˜ λ„€νŠΈμ›Œν¬ μƒνƒœλ‚˜ λ””λ°”μ΄μŠ€λ„ λŒ€μ‘ν•΄μ€˜μ•Ό ν•œλ‹€.

πŸ“μ μ ˆν•œ λŒ€μ²΄ ν…μŠ€νŠΈ 제곡 방법


이 ν¬μŠ€νŒ…μ—μ„œλŠ” 이미지λ₯Ό κΈ°μ€€μœΌλ‘œ ν•˜κ² λ‹€.

β—νŒ) μŠ€ν¬λ¦°λ¦¬λ”κΈ°λ₯Ό μ„€μΉ˜ν•΄μ„œ, μ μš©ν•œ λŒ€μ²΄ν…μŠ€νŠΈμ™€ λ”λΆˆμ–΄ μ›Ή νŽ˜μ΄μ§€κ°€ μ–΄λ–»κ²Œ μ½νžˆλŠ”μ§€ 직접 λ“€μœΌλ©΄μ„œ μž‘μ—…ν•˜λ„λ‘ ν•˜μž.

1. alt 속성

alt 속성을 톡해 λŒ€μ²΄ν…μŠ€νŠΈλ₯Ό λ„£μ–΄μ€€λ‹€.

<img src="/images/image.png" alt="이미지 μ„€λͺ…">


(case1) κ°„λ‹¨ν•œ 이미지 μ„€λͺ…


μœ„ κ°•μ•„μ§€λŠ” μ™œμΈμ§€λŠ” λͺ¨λ₯΄κ² μ§€λ§Œ λͺΉμ‹œ ν™”κ°€ λ‚˜μžˆλ‹€. 이 사진을 μ„€λͺ…ν•˜κΈ° μœ„ν•΄μ„œ λŒ€μ²΄ν…μŠ€νŠΈλ₯Ό μ•„λž˜μ™€ 같이 μ μ–΄μ€„μˆ˜ μžˆλ‹€.

<img src="/images/angry_dog.png" alt="λͺΉμ‹œ ν™”κ°€ λ‚œ κ°•μ•„μ§€">

(case2) μž‘μ„±ν•  λŒ€μ²΄ν…μŠ€νŠΈκ°€ κΈ΄ 이미지

<img src="/images/vote.png" alt="두근두근 첫 μ„ κ±°, λͺ¨λ‘λͺ¨λ‘ 첫 좜발">

μœ„ ν¬μŠ€ν„°μ²˜λŸΌ ν¬μŠ€ν„°μ— λ‹΄κΈ΄ ν…μŠ€νŠΈκ°€ μ§§λ‹€λ©΄ μœ„μ™€ 같이 μ κ² μ§€λ§Œ, ν¬μŠ€ν„° μ•ˆμ— "우리 λͺ¨λ‘ μ†Œμ€‘ν•œ ν•œν‘œλ₯Ό ν–‰μ‚¬ν•©μ‹œλ‹€!" 같은 문ꡬ가 μΆ”κ°€ λœλ‹€λ©΄ alt μ†μ„±μ•ˆμ— 적을 ν…μŠ€νŠΈκ°€ λ§Žμ•„μ§„λ‹€. 이런 경우 μ•„λž˜μ™€ 같이 μ²˜λ¦¬ν•  수 μžˆλ‹€.

<div>
  <img src="/images/vote.png" alt="">
  <p class="blind">
     두근두근 첫 μ„ κ±°, λͺ¨λ‘λͺ¨λ‘ 첫 좜발 우리 λͺ¨λ‘ μ†Œμ€‘ν•œ ν•œν‘œλ₯Ό ν–‰μ‚¬ν•©μ‹œλ‹€!
  </p>
</div>

μ—¬κΈ°μ„œ pνƒœκ·ΈλŠ” μŠ€ν¬λ¦°λ¦¬λ”κΈ°λ₯Ό μœ„ν•œ κ²ƒμ΄λ―€λ‘œ, νŽ˜μ΄μ§€μ— μ‹œκ°μ μœΌλ‘œ λ…ΈμΆœμ΄ λ˜μ–΄μ„œλŠ” μ•ˆλœλ‹€. κ·Έλ ‡λ‹€κ³  css μž‘μ„±μ„ display:none μ΄λ‚˜ visibility:hidden 둜 μ²˜λ¦¬ν•˜λ©΄ μŠ€ν¬λ¦°λ¦¬λ”κ°€ 읽어주지 μ•ŠμœΌλ―€λ‘œ opacityλ₯Ό 0으둜 μ²˜λ¦¬ν•˜λŠ” λ“±μ˜ λ°©λ²•μœΌλ‘œ μ²˜λ¦¬ν•΄μ•Ό ν•œλ‹€.


(μ„œλΉ„μŠ€μ— μ μš©ν•˜κΈ°)
DNDμ—μ„œ μ§„ν–‰ν•œ μŠ¬νŽΈμƒ ν”„λ‘œμ νŠΈμ— 경우, νŽΈμ˜μ μ— λ“±λ‘ν•œ μœ μ € μˆœμ„œλŒ€λ‘œ userProfileCodeλ₯Ό λΆ€μ—¬ν•΄ 이λ₯Ό μ•„λž˜μ˜ κ·€μ—¬μš΄ 이미지듀과 λ§€ν•‘ν•˜μ—¬ μœ μ € ν”„λ‘œν•„ μ΄λ―Έμ§€λ‘œ μ‚¬μš©ν•˜κ²Œ ν–ˆλ‹€.

ν”„λ‘œν•„ 이미지 μ„€λͺ…에 λŒ€ν•΄μ„œ μ•„λž˜μ™€ 같이 μ μ–΄μ£Όμ—ˆλ‹€.

	<img
		alt={`${userName}의 ν”„λ‘œν•„ 이미지`}
	    src={`/images/user/${userProfileCode}.svg`}
	/>

+) 이미지에 μ˜λ―Έκ°€ μ—†λŠ” 경우

이미지가 λ‹¨μˆœνžˆ μž₯μ‹μš©μœΌλ‘œ μžˆλŠ” 경우, λŒ€μ²΄ν…μŠ€νŠΈλ₯Ό μž‘μ„±ν•˜μ§€ μ•ŠλŠ” 편이 λ‚«λ‹€. μŠ€ν¬λ¦°λ¦¬λ”κΈ°κ°€ ν•„μˆ˜μ •λ³΄λ“€λ§Œ 읽어도 λ°›μ•„λ“€μ—¬μ•Ό ν•  정보가 λ„ˆλ¬΄ 많기 λ•Œλ¬Έμ΄λ‹€. κ·ΈλŸ¬λ‚˜ alt 속성을 μ μš©ν•΄ 두지 μ•ŠμœΌλ©΄ μŠ€ν¬λ¦°λ¦¬λ”κΈ°κ°€ 파일λͺ…을 읽어버리기 λ•Œλ¬Έμ— μ•„λž˜μ™€ 같이 λΉˆκ°’μœΌλ‘œ μ œκ³΅ν•˜λ„λ‘ ν•œλ‹€.

  <img src="λ””μžμ΄λ„ˆκ°€ μ˜ˆλ»μ„œ 넣은 이미지.jpg" alt="">

2. aria-label

aria-label을 ν†΅ν•΄μ„œλ„ μ½˜ν…μΈ μ˜ λŒ€μ²΄ν…μŠ€νŠΈλ₯Ό μž‘μ„±ν•  수 μžˆλ‹€. 또 aria-label은 λͺ¨λ“  html νƒœκ·Έμ—μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.

	// 곡톡 헀더 λ’€λ‘œκ°€κΈ° λ²„νŠΌμ— 적용
    <div aria-label="λ’€λ‘œκ°€κΈ°">
		<BackIcon />
    </div>
  

 // νšŒμ›μ •λ³΄ μˆ˜μ •νŽ˜μ΄μ§€ link에 적용 (ν†±λ‹ˆλ°”ν€΄)
 import Link from 'next/link';
 <Link title="νšŒμ›μ •λ³΄ μˆ˜μ • λ°”λ‘œκ°€κΈ°" href={SERVICE_URL.profileSetting}>
		<SettingIcon />
 </Link>
profile
일단 ν•˜λŠ” 쀑

0개의 λŒ“κΈ€