WAI (Web Accessibility Initiative)
μΉ νμ€μ μ νλ W3Cμμ μΉ μ κ·Όμ±μ λ΄λΉνλ κΈ°κ΄
ARIA (Accessible Rich Internet Applications)
μ₯μ κ° μλ μ¬λλ€μ΄ μΉ μ½ν
μΈ μ μΉ μμ© νλ‘κ·Έλ¨μ
λ μ½κ² μ‘μΈμ€ν μ μλλ‘ νλ, μ¦ μΉ μ κ·Όμ±μ κ°μΆκΈ° μν κΈ°μ
RIA (Rich Internet Applications)
λ°λ‘ νλ‘κ·Έλ¨μ μ€μΉνμ§ μμλ μΉ λΈλΌμ°μ λ₯Ό ν΅ν΄ μ¬μ©ν μ μλ νΈλ¦¬μ±κ³Ό
νλ‘κ·Έλ¨μ μ§μ μ€μΉν΄μ μ¬μ©νλ κ²μ²λΌ λΉ λ₯Έ λ°μμ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό
λμμ κ°μ§λ μΉ μ ν리μΌμ΄μ
. SPAλ₯Ό μλ―Ένλ κ²½μ°κ° λ§λ€.
WAI-ARIAλ WAIμμ λ°νν RIA νκ²½μμμ μΉ μ κ·Όμ± κΈ°μ κ·κ²©μ΄λ€.
WAI-ARIAλ HTML μμμ μΆκ°μ μΌλ‘ μλ―Έλ₯Ό λΆμ¬ν μ μκ² ν΄μ€λ€.
SPAμ²λΌ AJAXλ₯Ό μ¬μ©νλ μν©, μ¦ μλ‘κ³ μΉ¨ μμ΄ νμ΄μ§μ λ΄μ©μ΄ λ°λλμν©μμλ
λ³κ²½λ μμμ λν μ 보λ₯Ό μ λ¬ν΄μ€ μ μμ΄ λμ μΈ μ½ν
μΈ μμλ μΉ μ κ·Όμ±μ ν₯μμν¬ μ μλ€.
βοΈμ¬μ©μ μ£Όμν μ
μλ§¨ν± μμλ§μΌλ‘ μλ―Έλ₯Ό μΆ©λΆν
λΆμ¬ν μ μλ μν©μμλ§ WAI-ARIAλ₯Ό μ¬μ©ν΄μΌ νλ€.
(보쑰μ μΌλ‘ μ¬μ©ν΄μΌ νλ©°, WAI-ARIAλ₯Ό λ¨μ©νλ©΄ μλ¨)
WAI-ARIAλ HTML νκ·Έ λ΄λΆμ μμ±(attribute)μ μΆκ°ν¨μΌλ‘μ¨
μλ―Έλ₯Ό λΆμ¬ν΄μ€ μ μμΌλ©°, μμ±μλ ν¬κ² μΈ κ°μ§ λΆλ₯κ° μλ€.
μν (role) : HTML μμμ μν μ μ μνλ μμ±
μν(state) : μμμ νμ¬ μνλ₯Ό λνλ΄λ μμ±
μμ±(property) : μμμ νΉμ§μ μ μνλ μμ±(attribute)
Β roleΒ
HTMLμ μμ μ’
λ₯μ μν μ΄ μλ‘ λ§μ§ μμ λ,
μ΄λ€ μν μ νλ μμμΈμ§ λͺ
μν΄μ€ λ μ¬μ©ν μ μλ μμ±(attribute)μ΄λ€.
β· μμ 1
<div role="button">divμ΄μ§λ§ buttonμΌλ‘ μ¬μ©λλ μμ</div>
---------
<!-- HTML μμλ‘ μΆ©λΆν νμ
ν μ μλ λ΄μ©μ WAI-ARIAλ‘ λ μ€λͺ
ν΄ μ€ νμλ μλ€. -->
<!-- μλͺ»λ μμ -->
<button role="button">buttonμΈ μμ</button>
---------
<!-- μλ§¨ν± μμ λ³Έμ°μ μλ―Έλ₯Ό μμλ‘ λ°κΎΈμ§ μμμΌ νλ€. -->
<!-- μλͺ»λ μμ -->
<h1 role="button">h1μΈ μμ</h1>
β· μμ 2
<!-- κ΅¬μ‘°κ° νμ μν μ νκ³ μμμ νμ -->
<div role="tablist">
<li role="tab">Tab1</li>
<li role="tab">Tab2</li>
<li role="tab">Tab3</li>
</div>
<div role="tabpanel">Tab menu ONE</div>
<div role="tabpanel">Tab menu TWO</div>
<div role="tabpanel">Tab menu THREE</div>
Β aria-selectedΒ
Tab μ»΄ν¬λνΈμμ νμ¬ μ΄λ€ νμ΄ μ νλμ΄ μλμ§ νμν μ μλ€.
<div role="tabList">
<!-- 3κ°μ ν μ€μμ 첫 λ²μ§Έ νμ΄ μ νλ μνμμ μ μ μκ² λμλ€. -->
<li role="tab" aria-selected="true">Tab1</li>
<li role="tab" aria-selected="false">Tab2</li>
<li role="tab" aria-selected="false">Tab3</li>
</div>
<div role="tabpanel">Tab menu ONE</div>
<div role="tabpanel">Tab menu TWO</div>
<div role="tabpanel">Tab menu THREE</div>
Β aria-expandedΒ
μμ½λμΈ UIκ° νΌμ³μ§ μνμΈμ§ νμν΄ μ€λ€.
Β aria-hiddenΒ
μμκ° μ¨κΉ μνμΈμ§λ₯Ό νμν΄ μ€λ€.
Β aria-labelΒ
ν
μ€νΈ μ½ν
μΈ μμ΄ μ΄λ―Έμ§λ‘λ§ λ§λ€μ΄μ§ λ²νΌμ²λΌ
μμμ λν μ 보λ₯Ό μ ν μ»μ μ μλ κ²½μ°μ μ¬μ©νλ€.
<button aria-label="λ«κΈ°"/> <img src="X.png" /> </button>
<button aria-label="κ²μ"/> <img src="λ보기.png" /> </button>
Β aria-liveΒ
λΈλΌμ°μ§ λμ€μ λ΄μ©μ λμ°λ alert
modal
dialog
μ κ°μ μν μ νλ μμμ΄κ±°λ,
AJAX κΈ°μ μ μ¬μ©νμ¬ μ€μκ°μΌλ‘ λ΄μ©μ κ°±μ νλ μμμ μ¬μ©νλ μμ±μ΄λ€.
μκ° μ₯μ μΈλ€μ νλ©΄μ λμ μΈ μμλ₯Ό μμμ±κΈ° μ΄λ ΅κΈ° λλ¬Έμ,
μ΄ μμ±μ μ¬μ©ν΄μ μ€μκ°μΌλ‘ κ°±μ λλ λ΄μ©μ μλ €μ£Όλ©΄ ν° λμμ΄ λλ€.
β· μμ± κ°
polite
: μ€ν¬λ¦° 리λκ° νμ¬ μ½κ³ μλ λ΄μ©μ λͺ¨λ μ½κ³ λμ κ°±μ λ λ΄μ©μ μ¬μ©μμκ² μ λ¬νλ€.
assertive
: μ€ν¬λ¦° 리λκ° νμ¬ μ½κ³ μλ λ΄μ©μ μ€λ¨νκ³ κ°±μ λ λ΄μ©μ λ°λ‘ μ¬μ©μμκ² μ λ¬νλ€.
off(default)
π WAI-ARIAμ λν΄ λ μμλ³΄κ³ μΆλ€λ©΄?
π MDN - Using ARIA: Roles, states, and properties
π W3C - ARIA in HTML
π material