์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- ์ปดํจํฐ ๊ณตํ
- Study
- ํผํฐ ๋ชจ๋น์ ๋ฒ์ง ๋ชจํ
- ์คํ ์ด์ธ ์ฝ๋42๊ธฐ
- ํ ์คํธ ์์
- Lifting state
- JavaScript
- ๋ฒ๋ค๋ง
- BFS์ DFS
- State
- ๊ณ ์ฐจํจ์
- ์๋งจํฑ์์
- css
- html
- props drilling
- git
- wai-aria
- WEB
- css animation
- Effect Hook
- ํผํฐ ๋ชจ๋น
- React
- Cmarket
- ์คํ ์ด์ธ ์ฝ๋
- ์ ์ด์ฝฅ ๋์จ
- jsx
- prototype
- fetch api
- ๋ฒ์ง ๋ชจํ
- ํ๋ก๊ทธ๋๋จธ์ค
- Today
- Total
roqkf
[Web] ์น ํ์ค & ์ ๊ทผ์ฑ ๋ณธ๋ฌธ

โค๏ธ๐ฅ ์น ์ ๊ทผ์ฑ
- ์ฅ์ ์ธ, ๊ณ ๋ น์ ๋ฑ์ด ์น ์ฌ์ดํธ์์ ์ ๊ณตํ๋ ์ ๋ณด์ ๋น์ฅ์ ์ธ๊ณผ ๋๋ฑํ๊ฒ ์ ๊ทผํ๊ณ ์ดํดํ ์ ์๋๋ก ๋ณด์ฅํ๋ ๊ฒ
โค๏ธ๐ฅ ์น ์ ๊ทผ์ฑ์ ๊ฐ์ถ๋ฉด ์ป์ ์ ์๋ ํจ๊ณผ
- ์ฌ์ฉ์์ธต ํ๋
์น ์ ๊ทผ์ฑ์ ํ๋ณดํ๋ฉด ์ฅ์ ์ธ, ๊ณ ๋ น์ ๋ฑ ์ ๋ณด ์์ธ ๊ณ์ธต๋ ์น ์ฌ์ดํธ๋ฅผ ์์ ๋กญ๊ฒ ์ด์ฉํ ์ ์๊ฒ ๋๋ค. ๊ทธ๋งํผ ์ฌ์ดํธ์ ์ด์ฉ์๋ฅผ ๋๋ฆด ์ ์๊ณ , ์๋ก์ด ๊ณ ๊ฐ์ธต์ ํ๋ณดํ ์ ์๊ฒ ๋๋ค. ์ค์ ๋ก ์น ์ ๊ทผ์ฑ ํฅ์์ ํตํด ๋งค์ถ์ด ์ฆ๊ฐํ ์ธ๊ตญ ์ผํ๋ชฐ ์ฌ๋ก๋ ์์ผ๋ฉฐ, ๊ตญ๋ด ์จ๋ผ์ธ ์ผํ๋ชฐ์์๋ ๋ ธ๋ ์ธต์ ๋งค์ถ์ด ์ฆ๊ฐ ์ถ์ธ๋ฅผ ๋ณด์ด๊ณ ์๋ค. - ๋ค์ํ ํ๊ฒฝ ์ง์
์ ๋ณด ์์ธ ๊ณ์ธต์ด ์๋๋๋ผ๋ ์ ๋ณด์ ์ ๊ทผํ๊ธฐ ์ด๋ ค์ด ์ํฉ์ ์ฒํ ์ ์์ต๋๋ค. ์ด์ ์ค์ด๋ผ ํ๋ฉด์ ๋ณด๊ธฐ ์ด๋ ต๊ฑฐ๋, ๋ง์ฐ์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ํฉ ๋ฑ์ด ์๋ค. ์น ์ ๊ทผ์ฑ์ ํฅ์์ํค๋ฉด ๋ค์ํ ํ๊ฒฝ, ๋ค์ํ ๊ธฐ๊ธฐ์์์ ์น ์ฌ์ดํธ๋ฅผ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ฏ๋ก ์๋น์ค์ ์ฌ์ฉ ๋ฒ์๊ฐ ํ๋๋๋ค. ์์ฐ์ค๋ฝ๊ฒ ์๋น์ค์ ์ด์ฉ์ ์ ์ฆ๊ฐ๋ฅผ ๊ธฐ๋ํ ์ ์๋ค. - ์ฌํ์ ์ด๋ฏธ์ง ํฅ์
๊ธฐ์ ์ ์ฌํ์ ์ฑ ์์ ๋ํ ์ค์์ฑ์ด ์ ์ ์ฆ๊ฐํ๊ณ ์๋ ์ํฉ์์, ์น ์ ๊ทผ์ฑ ํ๋ณด๋ฅผ ํตํด ๊ธฐ์ ์ด ์ ๋ณด ์์ธ ๊ณ์ธต์ ์ํ ์ฌํ ๊ณตํ ๋ฐ ๋ณต์ง ํฅ์์ ํ์ฐ๊ณ ์์์ ๋ณด์ฌ์ค ์ ์๋ค. ๊ธฐ์ ์ ์ฌํ์ ์ด๋ฏธ์ง๊ฐ ํฅ์๋๋ฉด ๊ทธ๋งํผ ์ด์ฉ์ ์์ ์ฆ๊ฐ๋ ๋ฌผ๋ก ์ถฉ์ฑ ๊ณ ๊ฐ์ ํ๋ณดํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ๋์ด๋๊ฒ ๋๋ค.
โค๏ธ๐ฅ WAI-ARIA
- WAI์์ ๋ฐํํ RIA ํ๊ฒฝ์์์ ์น ์ ๊ทผ์ฑ ๊ธฐ์ ๊ท๊ฒฉ
- WAI์ ARIA๋ฅผ ํฉ์น ๋จ์ด
- ์น ์ ๊ทผ์ฑ์ ํฅ์์ํฌ ์ ์๋ ๋ฐฉ๋ฒ ์ค์ ํ๋
- WAI (Web Accessibility Initiative) : ์น ํ์ค์ ์ ํ๋ W3C์์ ์น ์ ๊ทผ์ฑ์ ๋ด๋นํ๋ ๊ธฐ๊ด
- ARIA (Accessible Rich Internet Applications) : ์ฅ์ ๊ฐ ์๋ ์ฌ๋๋ค์ด ์น ์ฝํ ์ธ ์ ์น ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ ์ฝ๊ฒ ์ก์ธ์คํ ์ ์๋๋ก ํ๋, ์ฆ ์น ์ ๊ทผ์ฑ์ ๊ฐ์ถ๊ธฐ ์ํ ๊ธฐ์
- RIA (Rich Internet Applications) : ๋ฐ๋ก ํ๋ก๊ทธ๋จ์ ์ค์นํ์ง ์์๋ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ฌ์ฉํ ์ ์๋ ํธ๋ฆฌ์ฑ + ํ๋ก๊ทธ๋จ์ ์ง์ ์ค์นํด์ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ ๋น ๋ฅธ ๋ฐ์์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋์์ ๊ฐ์ง๋ ์น ์ ํ๋ฆฌ์ผ์ด์ . SPA๋ฅผ ์๋ฏธํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
โค๏ธ๐ฅ WAI-ARIA์ ํ์์ฑ
- WAI-ARIA๋ HTML ์์์ ์ถ๊ฐ์ ์ผ๋ก ์๋ฏธ๋ฅผ ๋ถ์ฌํ ์ ์๊ฒ ํด ์ค๋ค.
- ๋ณด์กฐ์ ์ผ๋ก ์ฌ์ฉํ๋ฉด, ์น ์ ๊ทผ์ฑ์ ํฅ์์ํฌ ์ ์๋ค.
- ์๋งจํฑ ์์๋ง์ผ๋ก ์๋ฏธ๋ฅผ ์ถฉ๋ถํ ๋ถ์ฌํ ์ ์๋ ์ํฉ์ WAI-ARIA๋ฅผ ์ฌ์ฉํ๋ฉด HTML ์์์ ์ถ๊ฐ์ ์ธ ์๋ฏธ๋ฅผ ๋ถ์ฌํ์ฌ ๋ ์ํํ๊ฒ ํ์ด์ง๋ฅผ ํ์ ํ ์ ์๊ฒ ๋์์ค๋ค.
- ‘์๋งจํฑ ์์๋ง์ผ๋ก ์๋ฏธ๋ฅผ ์ถฉ๋ถํ ๋ถ์ฌํ ์ ์๋ ์ํฉ’์ด๋ผ๋ ๊ฒ์ ์๋งจํฑ ์์๋ง์ผ๋ก ์ถฉ๋ถํ ์ํฉ์์๋ WAI-ARIA๋ฅผ ์ฌ์ฉํ์ง ์์์ผ ํ๋ค๋ ์๋ฏธ. WAI-ARIA๋ ๋ณด์กฐ์ ์ธ ์ญํ ๋ก๋ง ์ฌ์ฉํด์ผ ํ๋ค. WAI-ARIA๋ฅผ ๋จ์ฉํด์ ์ ๋๋ฉฐ, ์๋งจํฑํ HTML์ ์์ฑํ๋ ๊ฒ์ด ์ต์ฐ์
- SPA์ฒ๋ผ AJAX๋ฅผ ์ฌ์ฉํ๋ ์ํฉ, ์ฆ ์๋ก๊ณ ์นจ ์์ด ํ์ด์ง์ ๋ด์ฉ์ด ๋ฐ๋๋ ์ํฉ์์๋ ๋ณ๊ฒฝ๋ ์์ญ์๋ํ ์ ๋ณด๋ฅผ ์ ๋ฌํด์ค ์ ์์ด ๋์ ์ธ ์ฝํ ์ธ ์์๋ ์น ์ ๊ทผ์ฑ์ ํฅ์์ํฌ ์ ์๋ค.
โค๏ธ๐ฅ WAI-ARIA ์ฌ์ฉ๋ฒ
1. ์ญํ (Role)
- HTML ์์์ ์ญํ ์ ์ ์ํ๋ ์์ฑ
- HTML์ ์์ ์ข ๋ฅ์ ์ญํ ์ด ์๋ก ๋ง์ง ์์ ๋, ์ด๋ค ์ญํ ์ ํ๋ ์์์ธ์ง ๋ช ์ํด์ค ๋ ์ฌ์ฉํ ์ ์๋ ์์ฑ(attribute)
<div role="button">div์ด์ง๋ง button์ผ๋ก ์ฌ์ฉ๋๋ ์์</div>
โ ๏ธ ์ฃผ์ํ ์ , HTML ์์๋ก ์ถฉ๋ถํ ํ์ ํ ์ ์๋ ๋ด์ฉ์ WAI-ARIA๋ก ๋ ์ค๋ช ํด์ค ํ์๋ ์๋ค.
// WAI-ARIA์ ์๋ชป๋ ์ฌ์ฉ ์์
<button role="button">button์ธ ์์</button>
โ ๏ธ ์๋งจํฑ ์์ ๋ณธ์ฐ์ ์๋ฏธ๋ฅผ ์์๋ก ๋ฐ๊พธ์ง ์์์ผ ํ๋ค.
// WAI-ARIA์ ์๋ชป๋ ์ฌ์ฉ ์์
<h1 role="button">h1์ธ ์์</h1>
2. ์ํ(State)
- ์์์ ํ์ฌ ์ํ๋ฅผ ๋ํ๋ด๋ ์์ฑ
๐ค aria-selected
์ฌ๋ฌ ๊ฐ์ ์ ํ ๊ฐ๋ฅํ ์์์ค์์ ์ ํ ์ํ์ธ ์์๋ฅผ ํ์ํ ์ ์๋ ์์ฑ
<div role="tabList">
<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>
3๊ฐ์ ํญ ์ค์์ ์ฒซ ๋ฒ์งธ ํญ์ด ์ ํ๋ ์ํ์์ ์ ์ ์๋ค. ์ด ์ธ์๋ ์์ฝ๋์ธ UI๊ฐ ํผ์ณ์ง ์ํ์ธ์ง ํ์ํด์ฃผ๋ aria-expanded , ์์๊ฐ ์จ๊น ์ํ์ธ์ง๋ฅผ ํ์ํ๋ aria-hidden ๋ฑ์ ์์ฑ์ด ์๋ค.
3. ์์ฑ(Property)
- ์์์ ํน์ง์ ์ ์ํ๋ ์์ฑ(attribute)
๐ค aria-label
์์์ ๋ํ ์ ๋ณด๋ฅผ ์ ํ ์ป์ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๊ธฐ๋ ํ๋ค. ํ
์คํธ ์ฝํ
์ธ ์์ด ์ด๋ฏธ์ง๋ก๋ง ๋ง๋ค์ด์ง ๋ฒํผ์ด ๋ํ์ ์ธ ์์์ด๋ค. ์ด๋ฏธ์ง๋ง ๋ค์ด์๋ ๋ฒํผ์ ๊ฒฝ์ฐ, HTML ์์์ ๊ตฌ์กฐ๋ง์ผ๋ก ์ด๋ค ์ญํ ์ ํ๋ ๋ฒํผ์ธ์ง ํ์
ํ๊ธฐ ์ด๋ ต๋ค.
<button> <img src="X.png" /> </button>
<button> <img src="๋๋ณด๊ธฐ.png" /> </button>
๋ฌผ๋ก ๋ฒํผ ์์์ ์จ๊ฒจ์ง ์์ ์์๋ฅผ ์ถ๊ฐํด์ ์ด๋ค ์ญํ ์ ํ๋์ง ์ค๋ช ํ๋ ๋ด์ฉ์ ์ถ๊ฐํด์ค ์ ๋ ์์ง๋ง, ์ด๋ด ๋ ์ฌ์ฉํ ์ ์๋ WAI-ARIA ์์ฑ์ด ๋ฐ๋ก 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)๊ฐ ์๋ค.
polite : ์คํฌ๋ฆฐ ๋ฆฌ๋๊ฐ ํ์ฌ ์ฝ๊ณ ์๋ ๋ด์ฉ์ ๋ชจ๋ ์ฝ๊ณ ๋์ ๊ฐฑ์ ๋ ๋ด์ฉ์ ์ฌ์ฉ์์๊ฒ ์ ๋ฌ
assertive : ์คํฌ๋ฆฐ ๋ฆฌ๋๊ฐ ํ์ฌ ์ฝ๊ณ ์๋ ๋ด์ฉ์ ์ค๋จํ๊ณ ๊ฐฑ์ ๋ ๋ด์ฉ์ ๋ฐ๋ก ์ฌ์ฉ์์๊ฒ ์ ๋ฌ
'๐ป Development > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Web] SEO (0) | 2023.01.17 |
---|---|
[Web] Cross Browsing (1) | 2023.01.09 |
[Web] ์์ฃผ ํ๋ฆฌ๋ Markup (0) | 2023.01.09 |
[Web] ์น ํ์ค & Semantic HTML (0) | 2023.01.09 |
wireframe & prototype (0) | 2022.12.18 |