-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
๐ ์ปดํฌ๋ํธ ์ ๋ณด
- ์ปดํฌ๋ํธ ์ด๋ฆ: Switch
- ์ปดํฌ๋ํธ ์ค๋ช : Switch๋ ์ฌ์ฉ์๊ฐ on ๋๋ off ๋ ๊ฐ์ง ๊ฐ ์ค ํ๋๋ฅผ ์ ํํ ์ ์๋ ์ ๋ ฅ ์์ ฏ
- ์ฌ์ฉ ์ฌ๋ก: ์ค์ ์ผ๊ธฐ/๋๊ธฐ, ๊ธฐ๋ฅ ํ์ฑํ/๋นํ์ฑํ ๋ฑ ์ด์ง ์ ํ์ด ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉ
๐ ์ฐธ์กฐ ๋ฐ ๋ ํผ๋ฐ์ค
- ARIA Authoring Practices: W3C ARIA Switch Pattern
- Switch ํจํด์ ์ค๋ช , ์์, ํค๋ณด๋ ์ธํฐ๋์ , ์ ๊ทผ์ฑ ๊ณ ๋ ค์ฌํญ ๋ฑ์ ์ฐธ๊ณ ํ ์ ์์
- ๊ธฐํ ๋ ํผ๋ฐ์ค:
- Building a switch component
- Switch ์ปดํฌ๋ํธ ์ ์ ๊ณผ์ ์ ์์ธํ ์ค๋ช ํ ๊ธ
- MUI, Ant Design ๋ฑ์ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ Switch ์ปดํฌ๋ํธ ๊ตฌํ ๋ฐฉ์์ ์ฐธ๊ณ ํ ์ ์์
- Building a switch component
๐ ์ ๊ทผ์ฑ ๋ฐ ARIA ์ ์ฉ ์ฌ๋ถ
- ARIA Pattern ์ ์ฉ: W3C ARIA Switch Pattern
- ์ฌ์ฉ๋ ARIA ์์ฑ:
role="switch": ์์๊ฐ switch์์ ๋ํ๋aria-checked="true|false": switch์ ์ํ(on/off)๋ฅผ ๋ํ๋aria-labelledby,aria-label: switch์ ๋ ์ด๋ธ์ ์ ๊ณตaria-describedby: switch์ ๋ํ ์ถ๊ฐ ์ค๋ช ์ ์ ๊ณต
- ์ฌ์ฉ๋ ARIA ์์ฑ:
- ์ ๊ทผ์ฑ ๊ด๋ จ ๊ณ ๋ ค์ฌํญ:
- Switch์ ์ํ ๋ณํ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ช ํํ ํ์ํด์ผ ํจ
- Switch์ ์ํ๋ฅผ ๋ํ๋ด๋ ํ
์คํธ(On/Off ๋ฑ)๋ ์คํฌ๋ฆฐ ๋ฆฌ๋์์ ์ค๋ณต ์ฝํ์ง ์๋๋ก
aria-hidden์์ฑ ์ฌ์ฉ - Switch์ ์ํ ๋ณํ ์ ๋ ์ด๋ธ์ด ๋ณ๊ฒฝ๋์ง ์์์ผ ํจ
- ํค๋ณด๋๋ก ์กฐ์ ๊ฐ๋ฅํด์ผ ํจ
- ์ ๊ทผ์ฑ ๊ธฐ๋ฅ ์์ฝ:
role="switch"์aria-checked๋ฅผ ์ฌ์ฉํ์ฌ switch์ ์ญํ ๊ณผ ์ํ๋ฅผ ์ ๋ฌ- ๋ ์ด๋ธ๊ณผ ์ค๋ช ์ ์ ๊ณตํ์ฌ switch์ ๋ชฉ์ ์ ๋ช ํํ ํจ
- ํค๋ณด๋ ์กฐ์์ ์ง์ํ์ฌ ์ ๊ทผ์ฑ์ ๋์
๐๏ธ ๋งํฌ์ ๊ตฌ์กฐ ๋ถ์
- HTML ์๋งจํฑ ํ๊ทธ ์ฌ์ฉ:
- W3C ์์ :
<div role="switch">,<span> - MUI:
<div class="MuiSwitch-root">,<input type="checkbox" role="switch"> - Ant Design:
<button type="button" role="switch">
- W3C ์์ :
- ๋งํฌ์
๊ตฌ์กฐ ๋น๊ต:
- W3C:
<div role="switch" aria-checked="false" tabindex="0"> <span class="label"> Notifications </span> <span class="switch"> <span></span> </span> <span class="on" aria-hidden="true"> On </span> <span class="off" aria-hidden="true"> Off </span> </div>
- MUI:
<div class="MuiSwitch-root"> <span class="MuiSwitch-track"> <span class="MuiSwitch-thumb"></span> </span> <div class="MuiSwitch-action"> <input type="checkbox" role="switch" class="MuiSwitch-input"> </div> </div>
- Ant Design:
<button type="button" role="switch" aria-checked="true" class="ant-switch ant-switch-checked"> <div class="ant-switch-handle"></div> <span class="ant-switch-inner"> <span class="ant-switch-inner-checked"></span> <span class="ant-switch-inner-unchecked"></span> </span> </button>
- W3C:
- ๊ตฌ์กฐ์ ์ ํ ์ด์ :
- W3C: switch์ ์ญํ ๊ณผ ์ํ๋ฅผ ๋ช
์์ ์ผ๋ก ํํํ๊ธฐ ์ํด
role๊ณผaria-*์์ฑ ์ฌ์ฉ - MUI:
<input type="checkbox" role="switch">๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ์ผ๋ง ๋ฐ ๊ธฐ๋ฅ ์ถ๊ฐ - Ant Design:
<button>์ ๊ธฐ๋ฐ์ผ๋ก ์คํ์ผ๋ง ๋ฐ ๊ธฐ๋ฅ ์ถ๊ฐํ๊ณrole๊ณผaria-*์์ฑ์ผ๋ก ์ ๊ทผ์ฑ ๋ณด์ฅ
- W3C: switch์ ์ญํ ๊ณผ ์ํ๋ฅผ ๋ช
์์ ์ผ๋ก ํํํ๊ธฐ ์ํด
๐ก UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋น๊ต ๋ถ์
- MUI:
<div>์<input type="checkbox" role="switch">๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ- CSS ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์คํ์ผ๋ง
- ์ํ์ ๋ฐ๋ฅธ ์คํ์ผ ๋ณ๊ฒฝ์ ํด๋์ค ์ถ๊ฐ/์ ๊ฑฐ๋ก ์ฒ๋ฆฌ
- Ant Design:
<button>์ ์ฌ์ฉํ์ฌ ๊ตฌํrole๊ณผaria-*์์ฑ์ ์ฌ์ฉํ์ฌ ์ ๊ทผ์ฑ ๋ณด์ฅ- ์ํ์ ๋ฐ๋ฅธ ์คํ์ผ ๋ณ๊ฒฝ์ ํด๋์ค ์ถ๊ฐ/์ ๊ฑฐ๋ก ์ฒ๋ฆฌ
โ๏ธ ๊ตฌํ ๋ฐ ์ค๊ณ ๊ณ ๋ ค์ฌํญ
- ์ฃผ์ ์ค๊ณ ๊ณ ๋ ค์ฌํญ:
- ์ ๊ทผ์ฑ: ํค๋ณด๋ ์กฐ์ ๊ฐ๋ฅ, ์ ์ ํ ๋ ์ด๋ธ ๋ฐ ์ค๋ช ์ ๊ณต, ์ํ ๋ณํ ๋ช ํํ ์ ๋ฌ
- ์ํ ๊ด๋ฆฌ: on/off ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ณ๊ฒฝํ ์ ์์ด์ผ ํจ
- ์คํ์ผ๋ง: ์ํ์ ๋ฐ๋ฅธ ์๊ฐ์ ๋ณํ๋ฅผ ๋ช ํํ ํํ
- ์ฝ๋ ์์:
<label class="switch"> <input type="checkbox" role="switch" aria-checked="false"> <span class="slider"></span> <span class="label">Switch Label</span> </label>
๐ ํ ์คํธ ๋ฐ ๊ฒํ
- ์ ๊ทผ์ฑ ํ
์คํธ:
- ํค๋ณด๋๋ก ์กฐ์ ๊ฐ๋ฅํ์ง ํ์ธ
- ์คํฌ๋ฆฐ ๋ฆฌ๋์์ ์ ์ ํ ์ฝํ๋์ง ํ์ธ
- ๋ธ๋ผ์ฐ์ ํธํ์ฑ ํ ์คํธ: ์ฃผ์ ๋ธ๋ผ์ฐ์ ์์ ์ผ๊ด๋ ๋์๊ณผ ์คํ์ผ๋ง ๋๋์ง ํ์ธ
- ์ฌ์ฉ์ ํผ๋๋ฐฑ: ์ฌ์ฉ์ฑ ํ ์คํธ๋ฅผ ํตํด ํผ๋๋ฐฑ์ ์๋ ดํ๊ณ ๊ฐ์ ์ฌํญ ๋ฐ์
๐ ์ถ๊ฐ ์ฐธ๊ณ ์ฌํญ
- ๊ด๋ จ ๋ฌธ์:
- ์๊ฒฌ ๋ฐ ์ ์:
- ๋ผ๋ฒจ ์์น ๋ฑ ๋์์ธ ์ ์ธ ์์๋ ํ๋ก์ ํธ์ ํน์ฑ์ ๋ง๊ฒ ์กฐ์ ํ์
- ์ํ ๋ณ๊ฒฝ ์ ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ฅผ ์ถ๊ฐํ์ฌ ์ฌ์ฉ์ ๊ฒฝํ ๊ฐ์ ๊ฐ๋ฅ
๐ฏ ์ญํ , ์์ฑ, ์ํ ๋ฐ ํ๊ทธ ์์ฑ
- Role, Attribute, State
- Role:
switch - Attribute:
aria-checked: switch์ ์ํ(on/off)๋ฅผ ๋ํ๋aria-labelledby,aria-label: switch์ ๋ ์ด๋ธ์ ์ ๊ณตaria-describedby: switch์ ๋ํ ์ถ๊ฐ ์ค๋ช ์ ์ ๊ณต
- State:
checked: switch์ ์ํ(on/off)๋ฅผ ๋ํ๋
- Role:
- JavaScript ๋ฐ CSS ์ฌ์ฉ ์ฌ๋ถ
- JavaScript ์ฌ์ฉ ์ฌ๋ถ:
- ์ํ ๋ณ๊ฒฝ ์ด๋ฒคํธ ์ฒ๋ฆฌ
- ํค๋ณด๋ ์ด๋ฒคํธ ์ฒ๋ฆฌ
- ์ ๊ทผ์ฑ ์์ฑ ๋์ ๋ณ๊ฒฝ
- CSS ์ ์ฉ ์ฌํญ:
- ์ํ์ ๋ฐ๋ฅธ ์คํ์ผ ๋ณ๊ฒฝ
- ํธ๋๊ณผ ์ธ์ ๋ชจ์ ๋ฐ ์์น ์กฐ์
- ์ ๋๋ฉ์ด์ ํจ๊ณผ ์ ์ฉ
- JavaScript ์ฌ์ฉ ์ฌ๋ถ: