-
-
Notifications
You must be signed in to change notification settings - Fork 3
Accessibility
- μ κ²½μκ³Ό λ°°κ²½μμ μΉΌλΌ μ½λλ₯Ό Contrast checkerμ μ λ ₯νκ³ μ κ·Όμ± λ£°μ λ€ ν΅κ³Όνλμ§ νμΈν©λλ€. image
μ΄ μν€ λ¬Έμλ "νκ΅ν μΉ μ½ν μΈ μ κ·Όμ± μ§μΉ¨ 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 λ±)μ ν€λ³΄λ ν μ€νΈ λ³ν