-
-
Notifications
You must be signed in to change notification settings - Fork 3
Accessibility
- ์ ๊ฒฝ์๊ณผ ๋ฐฐ๊ฒฝ์์ ์นผ๋ผ ์ฝ๋๋ฅผ Contrast checker์ ์
๋ ฅํ๊ณ ์ ๊ทผ์ฑ ๋ฃฐ์ ๋ค ํต๊ณผํ๋์ง ํ์ธํฉ๋๋ค.
์ด ์ํค ๋ฌธ์๋ "ํ๊ตญํ ์น ์ฝํ ์ธ ์ ๊ทผ์ฑ ์ง์นจ 2.2"๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Daleui ๋์์ธ ์์คํ ์ ์ค๊ณํ๊ณ ๊ฒํ ํ ๋ ์ฌ์ฉํด์ผ ํ๋ ์ ๊ทผ์ฑ ์ฒดํฌ๋ฆฌ์คํธ์ ๋๋ค. ๋ชจ๋ UI ์ปดํฌ๋ํธ, ์ฝํ ์ธ , ์ํธ์์ฉ ์์๊ฐ ์ฅ์ ์ธ ๋ฐ ๋น์ฅ์ ์ธ ๋ชจ๋์๊ฒ ๋๋ฑํ ์ ๊ทผ์ฑ์ ์ ๊ณตํ๋๋ก ๋ณด์ฅํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
์ฌ์ฉ์๊ฐ ์ฝํ ์ธ ๋ฅผ ์ธ์งํ ์ ์๋๋ก ์๊ฐ, ์ฒญ๊ฐ, ์ด๊ฐ ๋ฑ ๋ค์ํ ๊ฐ๊ฐ์ ๊ณ ๋ คํ ์ค๊ณ.
- ๋ชจ๋ ๋นํ ์คํธ ์ฝํ ์ธ (์ด๋ฏธ์ง, ์์ด์ฝ ๋ฑ)์ ์ ์ ํ ๋์ฒด ํ ์คํธ(alt text)๋ฅผ ์ ๊ณตํ๋๊ฐ? 1.1.1 Non-text Content (A)
- ๋์ฒด ํ ์คํธ๋ ์ฝํ ์ธ ์ ๋ชฉ์ ๊ณผ ๊ธฐ๋ฅ์ ๋ช ํํ ์ค๋ช ํ๋๊ฐ?
- ์ฝํ
์ธ ๊ฐ ์ ํ ๊ตฌ์กฐ๋ก ์ ๊ณต๋์ด ์คํฌ๋ฆฐ ๋ฆฌ๋๋ก ์ดํด ๊ฐ๋ฅํ๋๋ก ์ค๊ณ๋์๋๊ฐ?
1.3.1 Info and Relationships (A)
- Do: HTML ๋งํฌ์
์์๋ฅผ ๋
ผ๋ฆฌ์ ํ๋ฆ(์ ๋ชฉ โ ๋ณธ๋ฌธ โ ๊ด๋ จ ๋งํฌ ๋ฑ)์ ๋ง๊ฒ ์์ฑํฉ๋๋ค.
<h1>~<h6>,<p>,<ul>,<ol>,<nav>,<main>๋ฑ ์๋งจํฑ ํ๊ทธ๋ฅผ ์ ์ ํ ์ฌ์ฉํฉ๋๋ค. - Don't: ์๊ฐ์ ์ธ ๋ฐฐ์น๋ง์ ์ํด CSS position: absolute;๋ float๋ฅผ ๋จ์ฉํ์ฌ DOM ์์์ ์๊ฐ์ ์์๊ฐ ์์ ํ ๋ค๋ฅด๊ฒ ๋ง๋ญ๋๋ค. (์: ์๊ฐ์ ์ผ๋ก๋ ์ค๋ฅธ์ชฝ์ ์๋ ์ฌ์ด๋๋ฐ๊ฐ DOM์์๋ ๋ฉ์ธ ์ฝํ ์ธ ๋ณด๋ค ๋จผ์ ๋์ค๋ ๊ฒฝ์ฐ)
- Do: HTML ๋งํฌ์
์์๋ฅผ ๋
ผ๋ฆฌ์ ํ๋ฆ(์ ๋ชฉ โ ๋ณธ๋ฌธ โ ๊ด๋ จ ๋งํฌ ๋ฑ)์ ๋ง๊ฒ ์์ฑํฉ๋๋ค.
- ์๊ฐ์ ์์์ ๋
ผ๋ฆฌ์ ์์๊ฐ ์ผ์นํ๋๊ฐ?
1.3.2 Meaningful Sequence (A)
- Do: ๋๋๋ก ์ฝํ ์ธ ์ ๋ ผ๋ฆฌ์ ์์(DOM ์์)๊ฐ ์๊ฐ์ ์ฝ๊ธฐ ์์์ ์ผ์นํ๋๋ก ๋งํฌ์ ํฉ๋๋ค. Flexbox๋ Grid์ order ์์ฑ์ ์ฌ์ฉํ ๊ฒฝ์ฐ, ํค๋ณด๋ ํ์ ์์(Tab ํค)๊ฐ ์ฌ์ ํ ๋ ผ๋ฆฌ์ ์ธ์ง ๋ฐ๋์ ํ์ธํฉ๋๋ค.
- Don't: CSS Grid๋ Flexbox์ order ์์ฑ์ ์ฌ์ฉํ์ฌ ํญ๋ชฉ๋ค์ ์๊ฐ์ ์์๋ฅผ ๋ณ๊ฒฝํ์ผ๋, ํค๋ณด๋๋ก ํ์ํ ๋๋ ์๋ DOM ์์๋๋ก ์ด๋ํ์ฌ ์ฌ์ฉ์๊ฐ ํผ๋์ ๊ฒช๊ฒ ๋ง๋ญ๋๋ค. (์: ์๊ฐ์ ์ผ๋ก 1, 2, 3 ๋ฒํผ์ด ์์ง๋ง Tab ํค๋ก๋ 3, 1, 2 ์์๋ก ํฌ์ปค์ค๊ฐ ์ด๋ํ๋ ๊ฒฝ์ฐ)
- ๋ฐ์ํ ๋์์ธ์์ ์ฝํ ์ธ ๊ฐ ์์ค ์์ด ๋ชจ๋ ๋๋ฐ์ด์ค์์ ํ์๋๋๊ฐ? 1.3.4 Orientation (AA)
- ์
๋ ฅ ํ๋์ ๋ชฉ์ ์ ๋ช
์ํ๋๊ฐ?
1.3.5 Identify Input Purpose (AA)
- Do: ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์๊ตฌํ๋ ์
๋ ฅ ํ๋(์ด๋ฆ, ์ด๋ฉ์ผ, ์ฃผ์, ์ ํ๋ฒํธ ๋ฑ)์ autocomplete ์์ฑ์ ์ ์ ํ ๊ฐ๊ณผ ํจ๊ป ์ฌ์ฉํฉ๋๋ค. (์:
<input type="email" autocomplete="email" name="user_email">) - Don't: ์ด๋ฆ, ์ด๋ฉ์ผ, ์ฃผ์ ๋ฑ ์๋ ์์ฑ ๊ธฐ๋ฅ์ด ์ ์ฉํ ์ ์๋ ํ๋์ autocomplete ์์ฑ์ ์ ๊ณตํ์ง ์๊ฑฐ๋ autocomplete="off"๋ฅผ ๋ถํ์ํ๊ฒ ์ฌ์ฉํฉ๋๋ค.
- Do: ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์๊ตฌํ๋ ์
๋ ฅ ํ๋(์ด๋ฆ, ์ด๋ฉ์ผ, ์ฃผ์, ์ ํ๋ฒํธ ๋ฑ)์ autocomplete ์์ฑ์ ์ ์ ํ ๊ฐ๊ณผ ํจ๊ป ์ฌ์ฉํฉ๋๋ค. (์:
- ํ ์คํธ์ ๋ฐฐ๊ฒฝ ๊ฐ ๋ช ๋ ๋๋น๊ฐ ์ต์ 4.5:1(A) ๋๋ 3:1(AA) ์ด์์ธ๊ฐ? 1.4.3 Contrast (Minimum) (AA)
- ํ ์คํธ ํฌ๊ธฐ๋ฅผ 200%๊น์ง ํ๋ํด๋ ์ฝํ ์ธ ๊ฐ ์์ค๋์ง ์๋๊ฐ? 1.4.4 Resize Text (AA)
- ์ด๋ฏธ์ง๋ก ๋ ํ ์คํธ ๋์ ์ค์ ํ ์คํธ๋ฅผ ์ฌ์ฉํ๋๊ฐ? 1.4.5 Images of Text (AA)
- ์์๋ง์ผ๋ก ์ ๋ณด๋ฅผ ์ ๋ฌํ์ง ์์๋๊ฐ?
1.4.1 Use of Color (A)
- Do: ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ๋ ฅ ํ๋๋ฅผ ๋นจ๊ฐ์ ํ ๋๋ฆฌ๋ก ํ์ํจ๊ณผ ๋์์, ์ค๋ฅ ์์ด์ฝ(โ)๊ณผ ํจ๊ป "ํ์ ์ ๋ ฅ ํญ๋ชฉ์ ๋๋ค." ๊ฐ์ ํ ์คํธ ๋ฉ์์ง๋ฅผ ํจ๊ป ์ ๊ณตํฉ๋๋ค. ๋งํฌ ํ ์คํธ์๋ ์์๊ณผ ํจ๊ป ๋ฐ์ค์ ์ฌ์ฉํฉ๋๋ค.
- Don't: ํ์ ์ ๋ ฅ ํ๋์์ ๋ํ๋ด๊ธฐ ์ํด ๋ ์ด๋ธ ํ ์คํธ ์์๋ง ๋นจ๊ฐ์์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. ์ค๋ฅ ์ํ๋ฅผ ์ ๋ ฅ ํ๋ ํ ๋๋ฆฌ ์์๋ง ๋นจ๊ฐ์์ผ๋ก ๋ฐ๊พธ์ด ํ์ํฉ๋๋ค.
์ฌ์ฉ์๊ฐ ์ธํฐํ์ด์ค๋ฅผ ์ฝ๊ฒ ์กฐ์ํ ์ ์๋๋ก ์ค๊ณ.
- ๋ชจ๋ ๊ธฐ๋ฅ์ด ํค๋ณด๋๋ก๋ง ์กฐ์ ๊ฐ๋ฅํ๋๋ก ์ค๊ณ๋์๋๊ฐ?
2.1.1 Keyboard (A)
- Do: ์ปค์คํ
๋๋กญ๋ค์ด ๋ฉ๋ด๋ฅผ ๋ง๋ค ๋, ๋ฒํผ์ Tab์ผ๋ก ํฌ์ปค์ค ๊ฐ๋ฅํ๊ณ Enter๋ Space๋ก ์ด ์ ์์ผ๋ฉฐ, ๋ฉ๋ด ํญ๋ชฉ๋ค์ ํ์ดํ ํค(โ, โ)๋ก ์ด๋ํ๊ณ Enter๋ก ์ ํํ ์ ์๋๋ก ๊ตฌํํฉ๋๋ค. ์ฌ๋ผ์ด๋๋ ํ์ดํ ํค(โ, โ)๋ก ๊ฐ์ ์กฐ์ ํ ์ ์๊ฒ ํฉ๋๋ค. ๋ชจ๋ ์ธํฐ๋ํฐ๋ธ ์์์ tabindex="0" (ํ์์) ๋๋ ๋ค์ดํฐ๋ธ ์์(
<button>,<a>)๋ฅผ ์ฌ์ฉํฉ๋๋ค. - Don't: ๋ง์ฐ์ค ํด๋ฆญ์ผ๋ก๋ง ์ด๊ณ ๋ซ์ ์ ์๋ ์ปค์คํ ๋๋กญ๋ค์ด ๋ฉ๋ด๋ฅผ ๋ง๋ญ๋๋ค. Drag & Drop ์ธํฐํ์ด์ค์ ํค๋ณด๋ ๋์ฒด ์๋จ(์: '์๋ก ์ด๋' ๋ฒํผ)์ ์ ๊ณตํ์ง ์์ต๋๋ค.
- Do: ์ปค์คํ
๋๋กญ๋ค์ด ๋ฉ๋ด๋ฅผ ๋ง๋ค ๋, ๋ฒํผ์ Tab์ผ๋ก ํฌ์ปค์ค ๊ฐ๋ฅํ๊ณ Enter๋ Space๋ก ์ด ์ ์์ผ๋ฉฐ, ๋ฉ๋ด ํญ๋ชฉ๋ค์ ํ์ดํ ํค(โ, โ)๋ก ์ด๋ํ๊ณ Enter๋ก ์ ํํ ์ ์๋๋ก ๊ตฌํํฉ๋๋ค. ์ฌ๋ผ์ด๋๋ ํ์ดํ ํค(โ, โ)๋ก ๊ฐ์ ์กฐ์ ํ ์ ์๊ฒ ํฉ๋๋ค. ๋ชจ๋ ์ธํฐ๋ํฐ๋ธ ์์์ tabindex="0" (ํ์์) ๋๋ ๋ค์ดํฐ๋ธ ์์(
- ํค๋ณด๋ ํฌ์ปค์ค๊ฐ ๊ฐํ๋ ์ํฉ(Keyboard Trap)์ด ์๋๊ฐ? 2.1.2 No Keyboard Trap (A)
- ํค๋ณด๋ ๋จ์ถํค๊ฐ ์ฌ์ฉ์ ๋ง์ถคํ์ผ๋ก ์กฐ์ ๊ฐ๋ฅํ๊ฑฐ๋ ๋นํ์ฑํ ๊ฐ๋ฅํ๋๋ก ํ๋๊ฐ? 2.1.4 Character Key Shortcuts (A)
- ์๊ฐ ์ ํ์ด ์๋ ์ฝํ ์ธ ์ ๋ํด ์ฌ์ฉ์์๊ฒ ์ถฉ๋ถํ ์๊ฐ์ ์ ๊ณตํ๋๊ฐ? 2.2.1 Timing Adjustable (A)
- ์์ง์ด๋ ์ฝํ ์ธ ๋ฅผ ์ผ์ ์ ์ง, ์ค์ง, ์จ๊ธธ ์ ์๋ ์๋จ์ ์ ๊ณตํ๋๊ฐ? 2.2.2 Pause, Stop, Hide (A)
- ์ค๋จ(Interruptions)์ด ๋ฐ์ํ์ง ์๋๋ก ํ๊ฑฐ๋, ์ฌ์ฉ์ ๋์ ์์ด ์ค๋จ๋์ง ์๋๊ฐ? 2.2.4 Interruptions (AAA) (WCAG 2.2)
- ํ์์์์ผ๋ก ๋ฐ์ดํฐ ์์ค์ด ๋ฐ์ํ์ง ์๋๋ก ๊ฒฝ๊ณ ๋ฅผ ์ ๊ณตํ๋๊ฐ? 2.2.6 Timeouts (AAA) (WCAG 2.2)
- 1์ด์ 3ํ ์ด์ ๊น๋นก์ด๋ ์ฝํ ์ธ ๊ฐ ์๊ฑฐ๋, ์๊ณ๊ฐ ์ดํ๋ก ์ ํํ๋๊ฐ? 2.3.1 Three Flashes or Below Threshold (A)
- ์ํธ์์ฉ์ผ๋ก ๋ฐ์ํ๋ ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉ์๊ฐ ๋นํ์ฑํํ ์ ์๋๊ฐ? 2.3.3 Animation from Interactions (AAA) (WCAG 2.2)
- ๋ฐ๋ณต ์ฝํ ์ธ ๋ฅผ ๊ฑด๋๋ธ ์ ์๋ "Skip Navigation" ๋งํฌ๋ฅผ ์ ๊ณตํ๋๊ฐ? 2.4.1 Bypass Blocks (A)
- ํ์ด์ง ์ ๋ชฉ์ด ๊ณ ์ ํ๊ณ ์ค๋ช
์ ์ธ๊ฐ?
2.4.2 Page Titled (A)
- Do: ํ์ด์ง์ ์ฃผ์ ๋ด์ฉ์ ๋ช
ํํ ์ ์ ์๋ ์ ๋ชฉ์ ์ ๊ณตํฉ๋๋ค. (์:
<title>์ฅ๋ฐ๊ตฌ๋ - Daleui ์คํ ์ด</title>,<title>์น ์ ๊ทผ์ฑ ์ฒดํฌ๋ฆฌ์คํธ | Daleui ๋์์ธ ์์คํ </title>) - Don't: ๋ชจ๋ ํ์ด์ง์ ์ ๋ชฉ์
<title>Daleui</title>๋๋<title>๋ฉ์ธ ํ์ด์ง</title>์ ๊ฐ์ด ๋์ผํ๊ฑฐ๋ ๋ชจํธํ๊ฒ ์ค์ ํฉ๋๋ค.
- Do: ํ์ด์ง์ ์ฃผ์ ๋ด์ฉ์ ๋ช
ํํ ์ ์ ์๋ ์ ๋ชฉ์ ์ ๊ณตํฉ๋๋ค. (์:
- ํฌ์ปค์ค ์์๊ฐ ๋
ผ๋ฆฌ์ ์ด๊ณ ์ง๊ด์ ์ธ๊ฐ?
2.4.3 Focus Order (A)
- Do: Tab ํค๋ฅผ ๋๋ ์ ๋, ํ์ด์ง์ ์๊ฐ์ ํ๋ฆ(๋ณดํต ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ, ์์์ ์๋)์ ๋ฐ๋ผ ์์ธก ๊ฐ๋ฅํ๊ฒ ํฌ์ปค์ค๊ฐ ์ด๋ํ๋๋ก ํฉ๋๋ค. ๋ชจ๋ฌ ์ฐฝ์ ๋ซ์ผ๋ฉด, ๋ชจ๋ฌ์ ์ด์๋ ๋ฒํผ์ด๋ ๋งํฌ๋ก ํฌ์ปค์ค๊ฐ ๋์๊ฐ๋๋ก ๊ตฌํํฉ๋๋ค.
- Don't: Tab ํค๋ฅผ ๋๋ฅผ ๋ ํฌ์ปค์ค๊ฐ ํ์ด์ง ์๋จ ํค๋ โ ๋ณธ๋ฌธ ์ค๊ฐ โ ํธํฐ โ ๋ค์ ํค๋์ ๋ค๋ฅธ ์์ ๋ฑ์ผ๋ก ์์ธก ๋ถ๊ฐ๋ฅํ๊ฒ ์ด๋ํฉ๋๋ค. ๋ชจ๋ฌ ์ฐฝ์ ๋ซ์๋๋ฐ ํฌ์ปค์ค๊ฐ ํ์ด์ง์ ๋งจ ์ฒ์์ผ๋ก ์ด๋ํ๊ฑฐ๋ ์ฌ๋ผ์ง๋๋ค.
- ๋งํฌ์ ๋ชฉ์ ์ด ๋ฌธ๋งฅ์์ ๋ช ํํ๊ฐ? 2.4.4 Link Purpose (In Context) (A)
- ๋ค์ค ํ์ ๋ฐฉ๋ฒ(์ฌ์ดํธ๋งต, ๊ฒ์ ๋ฑ)์ ์ ๊ณตํ๋๊ฐ? 2.4.5 Multiple Ways (AA)
- ์ ๋ชฉ๊ณผ ๋ ์ด๋ธ์ด ๋ช
ํํ๊ณ ์ผ๊ด์ ์ธ๊ฐ?
2.4.6 Headings and Labels (AA)
- Do: ํ์ด์ง ๊ตฌ์กฐ์ ๋ง๊ฒ
<h1>๋ถํฐ<h6>๊น์ง ์ ๋ชฉ(Heading) ํ๊ทธ๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ๋ชจ๋ ์ ๋ ฅ ํ๋์๋ ๋ช ํํ<label>์ ์ ๊ณตํ๊ณ , ๋ฒํผ์๋ "์ ์ฅ", "์ทจ์", "๋ค์ ๋จ๊ณ" ๋ฑ ๋์์ ๋ช ํํ ์ค๋ช ํ๋ ํ ์คํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฌ์ดํธ ์ ์ฒด์์ ๋์ผ ๊ธฐ๋ฅ์ ๋ฒํผ์ ๋์ผํ ๋ ์ด๋ธ์ ์ ์งํฉ๋๋ค(์: ๋ชจ๋ ์ ์ฅ ๋ฒํผ์ "์ ์ฅ"). - Don't: ์๊ฐ์ ์ผ๋ก ์ ๋ชฉ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๊ธฐ ์ํด
<div>์ ํฐ ํฐํธ์ ๊ตต์ ์คํ์ผ๋ง ์ ์ฉํฉ๋๋ค. ๋ฒํผ์ "ํด๋ฆญ", "์ฌ๊ธฐ" ๋ฑ ๋ชจํธํ ๋ ์ด๋ธ์ ์ฌ์ฉํ๊ฑฐ๋, ์์ด์ฝ๋ง ์๋ ๋ฒํผ์ ์คํฌ๋ฆฐ ๋ฆฌ๋๊ฐ ์ฝ์ ์ ์๋ ์จ์ ํ ์คํธ๋ aria-label์ ์ ๊ณตํ์ง ์์ต๋๋ค.
- Do: ํ์ด์ง ๊ตฌ์กฐ์ ๋ง๊ฒ
- ํฌ์ปค์ค๊ฐ ์๊ฐ์ ์ผ๋ก ๋ณด์ด๋๊ฐ? 2.4.7 Focus Visible (AA)
- ๋ณต์กํ ์ ์ค์ฒ ๋์ ๋จ์ผ ํฌ์ธํฐ ๋์์ผ๋ก ๋์ฒด ๊ฐ๋ฅํ๋๋ก ํ๋๊ฐ? 2.5.1 Pointer Gestures (A)
- ํฌ์ธํฐ ์
๋ ฅ์ด ์ค์๋ก ์คํ๋์ง ์๋๋ก ์ทจ์ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํ๋๊ฐ?
2.5.2 Pointer Cancellation (A)
- Do: ๋ฒํผ ํด๋ฆญ๊ณผ ๊ฐ์ ์ก์ ์ 'down' ์ด๋ฒคํธ(mousedown, touchstart)๊ฐ ์๋ 'up' ์ด๋ฒคํธ(mouseup, click, touchend)์์ ์คํ๋๋๋ก ๊ตฌํํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ๋๋ฅธ ์ํ์์ ํฌ์ธํฐ๋ฅผ ๋ฒํผ ๋ฐ์ผ๋ก ์ด๋ํ ํ ๋ผ๋ฉด ์๋ฌด ๋์๋ ์ผ์ด๋์ง ์์์ผ ํฉ๋๋ค.
- Don't: ๋ฒํผ์ ๋๋ฅด๋ ์๊ฐ(mousedown, touchstart) ๋ฐ๋ก ๋์(์: ์ญ์ , ์ ์ก)์ด ์คํ๋๋๋ก ํ์ฌ, ์ฌ์ฉ์๊ฐ ์ค์๋ก ๋๋ ๋ค๊ฐ ๋ผ๊ธฐ ์ ์ ์ทจ์ํ ๊ธฐํ๋ฅผ ์ฃผ์ง ์์ต๋๋ค.
- ๋ ์ด๋ธ๊ณผ ํ๋ก๊ทธ๋๋ฐ์ ์ด๋ฆ์ด ์ผ์นํ๋๊ฐ? 2.5.3 Label in Name (A)
- ๋ชจ์ ๊ธฐ๋ฐ ์ ๋ ฅ(์: ํ๋ค๊ธฐ)์ด ํ์๊ฐ ์๋ ์ ํ ์ฌํญ์ธ๊ฐ? 2.5.4 Motion Actuation (A)
์ฌ์ฉ์๊ฐ ์ฝํ ์ธ ์ ์ธํฐํ์ด์ค๋ฅผ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ์ค๊ณ.
- ํ์ด์ง์ ๊ธฐ๋ณธ ์ธ์ด๊ฐ ๋ช ์๋์ด ์๋๊ฐ? 3.1.1 Language of Page (A)
- ํน์ ๋ถ๋ถ์ ์ธ์ด๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ช ์ํ๋๊ฐ? 3.1.2 Language of Parts (AA)
- ํฌ์ปค์ค ๋ณ๊ฒฝ์ ์๊ธฐ์น ์์ ๋ณํ๊ฐ ๋ฐ์ํ์ง ์๋๊ฐ?
3.2.1 On Focus (A)
- Do: ์ฌ์ฉ์๊ฐ ๋ผ๋์ค ๋ฒํผ ๊ทธ๋ฃน ์ค ํ๋๋ฅผ ์ ํํ๊ฑฐ๋ ๋๋กญ๋ค์ด ๋ฉ๋ด์์ ์ต์ ์ ์ ํํ์ ๋, ๋ณ๋์ '์ ์ฉ' ๋๋ '๋ค์' ๋ฒํผ์ ํด๋ฆญํด์ผ๋ง ๋ด์ฉ์ด ๋ณ๊ฒฝ๋๊ฑฐ๋ ํ์ด์ง๊ฐ ์ด๋ํ๋๋ก ํฉ๋๋ค. ์ ๋ ฅ ํ๋์ ํฌ์ปค์ค๊ฐ ๊ฐ๋ค๊ณ ํด์ ์๋์ผ๋ก ํ์ ์ฐฝ์ด ๋จ์ง ์๋๋ก ํฉ๋๋ค.
- Don't: ๋๋กญ๋ค์ด ๋ฉ๋ด์์ ํน์ ์ต์ ์ ์ ํํ๋ ์ฆ์ ํ์ด์ง๊ฐ ์๋ก๊ณ ์นจ๋๊ฑฐ๋ ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค. ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํ์๋ง์ ๋์์๊ฐ ์ ์ถ๋ฉ๋๋ค.
- ์ ๋ ฅ ์ ๋ฌธ๋งฅ์ด ์๊ธฐ์น ์๊ฒ ๋ณ๊ฒฝ๋์ง ์๋๊ฐ? 3.2.2 On Input (A)
- ๋ด๋น๊ฒ์ด์
์ด ๋ชจ๋ ํ์ด์ง์์ ์ผ๊ด์ ์ธ๊ฐ?
3.2.3 Consistent Navigation (AA)
- Do: ๋ฉ์ธ ๋ฉ๋ด(๊ธ๋ก๋ฒ ๋ด๋น๊ฒ์ด์ ๋ฐ), ํธํฐ, ๊ฒ์์ฐฝ ๋ฑ ๋ฐ๋ณต๋๋ ์์๋ ๋ชจ๋ ํ์ด์ง์์ ๋์ผํ ์์น์ ํํ๋ก ์ ๊ณตํฉ๋๋ค. '์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ' ๋ฒํผ์ ์ฌ์ดํธ ๋ด ๋ชจ๋ ์ํ ํ์ด์ง์์ ๋์ผํ ์์ด์ฝ๊ณผ ํ ์คํธ ๋ ์ด๋ธ์ ์ฌ์ฉํฉ๋๋ค.
- Don't: ์ด๋ค ํ์ด์ง์์๋ ์๋จ์ ์๋ ์ฃผ ๋ฉ๋ด๊ฐ ๋ค๋ฅธ ํ์ด์ง์์๋ ์ผ์ชฝ์ ๋ํ๋ฉ๋๋ค. 'ํธ์ง' ๊ธฐ๋ฅ์ ์ด๋ค ๊ณณ์์๋ ์ฐํ ์์ด์ฝ์ผ๋ก, ๋ค๋ฅธ ๊ณณ์์๋ '์์ '์ด๋ผ๋ ํ ์คํธ ๋ฒํผ์ผ๋ก ํ์ํฉ๋๋ค.
- ๋์ผํ ๊ธฐ๋ฅ์ ์์๊ฐ ์ผ๊ด๋๊ฒ ์๋ณ๋๋๊ฐ? 3.2.4 Consistent Identification (AA)
- ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฅผ ๋ช
ํํ ์๋ณํ ์ ์๋ ๋ฉ์์ง๋ฅผ ์ ๊ณตํ๋๊ฐ?
3.3.1 Error Identification (A)
- Do: ํผ ์ ์ถ ์ ์ค๋ฅ๊ฐ ์๋ค๋ฉด, ์ด๋ค ํ๋์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋์ง ํด๋น ํ๋ ์์ด๋ ์๋์ ๋ช ํํ ํ ์คํธ(์: "์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์.")๋ก ์๋ ค์ฃผ๊ณ , ํด๋น ํ๋๋ก ํฌ์ปค์ค๋ฅผ ์ด๋์ํค๊ฑฐ๋ ์ค๋ฅ ์์ฝ ์ ๋ณด๋ฅผ ์๋จ์ ์ ๊ณตํฉ๋๋ค. aria-describedby๋ฅผ ์ฌ์ฉํด ์ค๋ฅ ๋ฉ์์ง์ ์ ๋ ฅ ํ๋๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ์ฐ๊ฒฐํฉ๋๋ค.
- Don't: ํผ ์ ์ถ ์คํจ ์ ํ์ด์ง ์๋จ์ "์ ๋ ฅ ์ค๋ฅ๊ฐ ์์ต๋๋ค."๋ผ๋ ๋ฉ์์ง๋ง ๋์ฐ๊ณ ์ด๋ ํ๋๊ฐ ์๋ชป๋์๋์ง ์๋ ค์ฃผ์ง ์์ต๋๋ค. ์ค๋ฅ ํ๋์ ํ ๋๋ฆฌ ์์๋ง ๋ณ๊ฒฝํ๊ณ ํ ์คํธ ์ค๋ช ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
- ์ ๋ ฅ ํ๋์ ๋ ์ด๋ธ ๋๋ ์ง์๋ฌธ์ ์ ๊ณตํ๋๊ฐ? 3.3.2 Labels or Instructions (A)
- ์ค๋ฅ ๋ฐ์ ์ ์์ ์ ์์ ์ ๊ณตํ๋๊ฐ? 3.3.3 Error Suggestion (AA)
- ๋ฒ์ /๊ธ์ต/๋ฐ์ดํฐ ๊ด๋ จ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ ์๋จ(ํ์ธ ๋จ๊ณ ๋ฑ)์ ์ ๊ณตํ๋๊ฐ? 3.3.4 Error Prevention (Legal, Financial, Data) (AA)
๋ค์ํ ๊ธฐ์ ๊ณผ ๋ณด์กฐ ๋๊ตฌ์์ ์์ ์ ์ผ๋ก ์๋ํ๋๋ก ์ค๊ณ.
- HTML/CSS๊ฐ ํ์ฑ ์ค๋ฅ ์์ด ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑ๋์๋๊ฐ? 4.1.1 Parsing (A)
- ๋ชจ๋ ์์์ ์ด๋ฆ(Name), ์ญํ (Role), ๊ฐ(Value)์ด ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ์ ๊ณต๋์๋๊ฐ?
4.1.2 Name, Role, Value (A)
- Do: ์ปค์คํ
์ฒดํฌ๋ฐ์ค๋ฅผ
<div>์ CSS๋ก ๋ง๋ค์๋ค๋ฉด,<div role="checkbox" aria-checked="true" tabindex="0" aria-labelledby="label-id">์ ๊ฐ์ด ARIA ์์ฑ์ ์ฌ์ฉํ์ฌ ์ญํ (checkbox), ์ํ(checked), ์ด๋ฆ(labelledby)์ ๋ช ์ํฉ๋๋ค. ํ์ค HTML ์ปจํธ๋กค(<button>,<input type="checkbox">๋ฑ)์ ์ต๋ํ ์ฌ์ฉํฉ๋๋ค. - Don't: ์์ด์ฝ ๋ฒํผ์
<span>ํ๊ทธ์ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ก๋ง ๋ง๋ค๊ณ , ์คํฌ๋ฆฐ ๋ฆฌ๋๊ฐ ์ฝ์ ์ ์๋ aria-label์ด๋ ์จ์ ํ ์คํธ๋ฅผ ์ ๊ณตํ์ง ์์ ์ฉ๋๋ฅผ ์ ์ ์๊ฒ ๋ง๋ญ๋๋ค. ์ปค์คํ ์ปดํฌ๋ํธ์ role์ด๋ ์ํ๋ฅผ ๋ํ๋ด๋ aria-* ์์ฑ์ ๋๋ฝํฉ๋๋ค.
- Do: ์ปค์คํ
์ฒดํฌ๋ฐ์ค๋ฅผ
- ์ํ ๋ฉ์์ง๊ฐ ๋ณด์กฐ ๊ธฐ์ ๋ก ์ ๋ฌ๋๋๋ก ์ค๊ณ๋์๋๊ฐ?
4.1.3 Status Messages (AA)
- Do: ํญ๋ชฉ์ ์ฅ๋ฐ๊ตฌ๋์ ์ถ๊ฐํ์ ๋, "์ํ์ด ์ฅ๋ฐ๊ตฌ๋์ ์ถ๊ฐ๋์์ต๋๋ค." ์ ๊ฐ์ ๋ฉ์์ง๊ฐ ๋ํ๋๋ ์์ญ์
<div aria-live="polite">๋๋<div role="status">๋ก ๊ฐ์ธ์ ์คํฌ๋ฆฐ ๋ฆฌ๋๊ฐ ํด๋น ๋ฉ์์ง๋ฅผ ์ฌ์ฉ์์๊ฒ ์๋์ผ๋ก ์ฝ์ด์ฃผ๋๋ก ํฉ๋๋ค. - Don't: ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ๋ก๋๋๊ฑฐ๋, ์ค์ ์ด ์ ์ฅ๋์๋ค๋ ์๊ฐ์ ํผ๋๋ฐฑ๋ง ์ ๊ณตํ๊ณ , ์คํฌ๋ฆฐ ๋ฆฌ๋ ์ฌ์ฉ์์๊ฒ๋ ์๋ฌด๋ฐ ์ ๋ณด ์ ๋ฌ ์์ด ์กฐ์ฉํ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋ฉ๋๋ค.
- Do: ํญ๋ชฉ์ ์ฅ๋ฐ๊ตฌ๋์ ์ถ๊ฐํ์ ๋, "์ํ์ด ์ฅ๋ฐ๊ตฌ๋์ ์ถ๊ฐ๋์์ต๋๋ค." ์ ๊ฐ์ ๋ฉ์์ง๊ฐ ๋ํ๋๋ ์์ญ์
ํ๊ตญํ ์น ์ฝํ ์ธ ์ ๊ทผ์ฑ ์ง์นจ 2.2์์ ๊ฐ์กฐ๋ ํ๊ตญ ํนํ ์๊ตฌ์ฌํญ๋ค.
- ๋ฐ๋ณต ์
๋ ฅ ์ ๋ณด ์ต์ํ: ์ฌ์ฉ์๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ์
๋ ฅํด์ผ ํ๋ ์ ๋ณด๋ฅผ ์ค์๋๊ฐ? (7.3.4)
- Do: ํ์๊ฐ์ ์ ์ ๋ ฅํ ์ฃผ์๋ฅผ ์ฃผ๋ฌธ ์ '๊ธฐ๋ณธ ๋ฐฐ์ก์ง๋ก ์ฌ์ฉ' ์ต์ ์ผ๋ก ๋ถ๋ฌ์ฌ ์ ์๊ฒ ํ๊ฑฐ๋, ์ด์ ๊ฒฐ์ ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ์ ์ฅํ์ฌ ๋ค์ ๊ฒฐ์ ์ ์ฌ์ฌ์ฉํ ์ ์๋๋ก(์ฌ์ฉ์ ๋์ ํ์) ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- Don't: ์ํ ์ฃผ๋ฌธ ์ ๋งค๋ฒ ์ด๋ฆ, ์ฐ๋ฝ์ฒ, ์ฃผ์๋ฅผ ์ฒ์๋ถํฐ ์๋ก ์ ๋ ฅํ๋๋ก ์๊ตฌํฉ๋๋ค. ์ฌ๋ฌ ๋จ๊ณ๋ก ์ด๋ฃจ์ด์ง ์ ์ฒญ์์์ ์ด์ ๋จ๊ณ์ ์ ๋ ฅํ๋ ๋์ผํ ์ ๋ณด๋ฅผ ๋ค์ ๋จ๊ณ์์ ๋ ๋ฌผ์ด๋ด ๋๋ค.
- ์ ๊ทผ ๊ฐ๋ฅํ ์ธ์ฆ: ์ธ์ฆ ๊ณผ์ ์์ ๋ณด์กฐ ๊ธฐ์ ์ฌ์ฉ์๊ฐ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ์ค๊ณํ๋๊ฐ? (7.3.3)
- Do: ์ด๋ฏธ์ง CAPTCHA ๋์ ์์ฑ CAPTCHA ์ต์ ์ ์ ๊ณตํ๊ฑฐ๋, reCAPTCHA v3์ ๊ฐ์ด ์ฌ์ฉ์ ์ธํฐ๋์ ์ด ์ ์ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค. ๊ณต๋์ธ์ฆ์(๊ตฌ ๊ณต์ธ์ธ์ฆ์), ๊ธ์ต์ธ์ฆ์ ๋ฑ ๊ตญ๋ด ์ธ์ฆ ์๋จ์ ์ฌ์ฉํ ๋ ํ์ํ ํ๋ก๊ทธ๋จ ์ค์น ๋ฐ ์คํ ๊ณผ์ ์ด ํค๋ณด๋๋ก ์ ๊ทผ ๊ฐ๋ฅํ๊ณ ์คํฌ๋ฆฐ ๋ฆฌ๋๋ก ์๋ด๋๋๋ก ํฉ๋๋ค. (๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋์ฒด ์ธ์ฆ ์๋จ ์ ๊ณต)
- Don't: ์๊ฐ์ ์ด๋ฏธ์ง CAPTCHA๋ง ์ ๊ณตํ๊ณ ๋์ฒด ์๋จ์ด ์์ต๋๋ค. ํน์ ๋ณด์ ํ๋ก๊ทธ๋จ(ActiveX ๋๋ ์คํ ํ์ผ ํํ) ์ค์น๊ฐ ํ์์ด๋ฉฐ, ํด๋น ํ๋ก๊ทธ๋จ์ด ํค๋ณด๋ ์กฐ์์ด๋ ์คํฌ๋ฆฐ ๋ฆฌ๋๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ์๊ฐ ์ ํ์ด ์๋ OTP ์ ๋ ฅ ํ๋ฉด์์ ์๊ฐ ์ฐ์ฅ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
- ๊ตญ๋ด ๋ฒ์ ์ค์: ใ์ฅ์ ์ธ ์ฐจ๋ณ๊ธ์ง๋ฒใ ๋ฐ ใ๊ตญ๊ฐ์ ๋ณดํ๊ธฐ๋ณธ๋ฒใ์ ๋ฐ๋ฅธ ์๋ฌด ์ฌํญ์ ๋ฐ์ํ๋๊ฐ?
- ๋ชจ๋ฐ์ผ ํ๊ฒฝ ๊ณ ๋ ค: PC๋ฟ๋ง ์๋๋ผ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์์ ์ ๊ทผ์ฑ์ ๊ฒํ ํ๋๊ฐ? (1 ์ ์ฉ ๋ฒ์)
- Do: ๋ชจ๋ฐ์ผ ํ๋ฉด์์ ๋ฒํผ์ด๋ ๋งํฌ ๋ฑ ํฐ์น ๋์์ ํฌ๊ธฐ๋ฅผ ์ต์ 44x44 CSS ํฝ์ ์ด์์ผ๋ก ์ถฉ๋ถํ ํ๋ณดํ๊ณ , ์์ ๊ฐ ๊ฐ๊ฒฉ๋ ์ ์ ํ ๋ฐฐ์นํ์ฌ ์๋ชป ํฐ์นํ ๊ฐ๋ฅ์ฑ์ ์ค์ ๋๋ค. ํ์น ์ค(Pinch zoom) ๊ธฐ๋ฅ์ ๋ง์ง ์์ ์ฌ์ฉ์๊ฐ ํ๋ฉด์ ํ๋ํ ์ ์๋๋ก ํฉ๋๋ค. ํ๋ฉด ๋ฐฉํฅ(๊ฐ๋ก/์ธ๋ก) ์ ํ ์ ์ฝํ ์ธ ๊ฐ ์๋ฆฌ์ง ์๊ณ ์์ฐ์ค๋ฝ๊ฒ ์ฌ๋ฐฐ์น๋๋๋ก ๋ฐ์ํ์ผ๋ก ๋์์ธํฉ๋๋ค.
- Don't: ๋ชจ๋ฐ์ผ ํ๋ฉด์์ ๋ฒํผ๋ค์ด ๋๋ฌด ์๊ณ ์ด์ดํ๊ฒ ๋ถ์ด ์์ด ๋๋ฅด๊ธฐ ์ด๋ ต์ต๋๋ค.
<meta name="viewport" content="..., user-scalable=no">๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ํ๋/์ถ์ ๊ธฐ๋ฅ์ ๋นํ์ฑํํฉ๋๋ค. ๊ฐ๋ก ๋ชจ๋์์๋ ์ฝํ ์ธ ์ ์ผ๋ถ๊ฐ ์๋ ค๋๊ฐ ์คํฌ๋กค ์์ด๋ ๋ณผ ์ ์์ต๋๋ค.
- ๊ฐ ์ปดํฌ๋ํธ(๋ฒํผ, ์ ๋ ฅ ํ๋, ๋ด๋น๊ฒ์ด์ ๋ฑ)๋ฅผ ์ค๊ณํ ๋ ์ด ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์ฐธ๊ณ
- ์ฒดํฌ๋ฆฌ์คํธ ํญ๋ชฉ์ ํ๋์ฉ ๊ฒํ ํ๋ฉฐ "์/์๋์ค"๋ก ํ์ธํ๊ณ , ๋ฏธ์ค์ ํญ๋ชฉ์ ๊ฐ์ ๊ณํ ์๋ฆฝ
- ๊ฐ๋ฐ ๋ฐ QA ๋จ๊ณ์์ ์คํฌ๋ฆฐ ๋ฆฌ๋(NVDA, VoiceOver ๋ฑ)์ ํค๋ณด๋ ํ ์คํธ ๋ณํ