Naver ๋ก๊ทธ์ธ ํ์ด์ง ๋ง๋ค๊ธฐ (๋ฐ์ํ)
๋ ผ๋ฆฌ์ ์ธ ์์ ์ ํ๊ธฐ
Naver๋ก๊ณ - ์์ด๋ ์ ๋ ฅ โ ๋น๋ฐ๋ฒํธ ์ ๋ ฅ โ ๋ก๊ทธ์ธ์ํ์ ์ง ์ฒดํฌ โ IP๋ณด์ ์ฒดํฌ โ ๋ก๊ทธ์ธ
์๋งจํฑ ๋งํฌ์ (์์)
์ด๋ค ์์๋ฅผ ์ ํํ ์ง ๊ณ ๋ฏผํ๊ธฐ
Naver ๋ก๊ณ h1 > a > img
์์ด๋, ํจ์ค์๋ ์ ๋ ฅ์ฐฝ form > fieldset > legend + label + input + span
๋ก๊ทธ์ธ ๋ฒํผ, ๋ก๊ทธ์ธ ์ ์ง ๋ฒํผ, IP ๋ณด์ ๋ฒํผ div > input + label
๋ค์ด๋ฐ ๊ท์น ์ ํ๊ธฐ
๊ท์น ์ข ๋ฅ : PascalCase, camelCase, kebab-case. snake_case
- class -> kebab-case
- ID -> camelCase
๋ค์ด๋ฐ
- Naver๋ก๊ณ -> h1.logo > a.naver-home-link > img.responsive-svg
- ์์ด๋, ํจ์ค์๋ ์ ๋ ฅ์ฐฝ -> form.login-form > fieldset > legend.a11y + label.a11y + input.user-email-input + span.error-message
- ๋ก๊ทธ์ธ ๋ฒํผ, ๋ก๊ทธ์ธ ์ ์ง ๋ฒํผ, IP ๋ณด์ ๋ฒํผ -> div.login-state-ip-security-checkbox-wrapper > input.login-state-checkbox + label.login-stat-label
WAI-ARIA ์ฝ๋ ์ถ๊ฐ
์์ด๋, ํจ์ค์๋ input -> aria-invalid="false" aria-describedby="userPasswordError" aria-live="polite"
aria-invalid
๋์ ์ผ๋ก ๋ณ๊ฒฝ๋๋ ์ ๋ณด๋ฅผ ์ฐพ์๋ด์ ๊ฐ์ด ์ ํจํ์ง ์ํ์ง๋ฅผ ์๋ ค์ค๋ค.
aria-describedby
์ฐ๊ฒฐ๋ ๊ฐ์ value๋ฅผ ์ฝ์ด์ค๋ค.
aria-live
ํ๋ฉด์ด ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋๋ ์ ๋ณด๋ฅผ ์๋ ค์ค๋ค.
์ค๋์ ์ฃผ๋ง ์คํ ํน๊ฐ์ ๊ฑฐ์ ์ฒญ๊ฐ์ด์๋ค. html ์ฝ๋์ง๋ ๊ฒ๊น์ง๋ ๋ฐ๋ผ ๊ฐ๋๋ฐ css ๋ถํฐ๋ ์ฒ์ ๋ฃ๋ ๊ฐ๋ ์ ๊ณ์ฐํด์ผ๋๋ ๋ถ๋ถ๊น์ง ์์ด์ ์ง์ค์ด ๋๋ฌด ์๋๊ณ ์ธ๊ตญ์ด ๋ฃ๋ ๊ธฐ๋ถ์ด์๋ค. ์ง์ง ๋ฉ๋ถ๐คฎ๐คฎ๐คฎ ๋ฃ๋ ๋์ ๋ด๊ฐ ํ ์ ์์๊น๋ผ๋ ์ข์ ๊ฐ๋ ๋ค๊ณ ๋ผ์ด์ง์๋ ์ง๋ฌธ๋ ๊ฑฐ์ ์์ฌ๋ผ์์ ๋๋ง ๋ชป์์๋ฃ๊ณ ์๊ตฌ๋ ์ถ์๋ค. css์ ๋ํ ๊ฐ๋ ์ด ๋๋ฌด ์์ด์ ๋ชป์์๋ฃ๋๊ฑด ๋น์ฐํ์ง๋ง ๊ฐ์ฌ๋์ด ์ค๋ช ํ๋ ๊ฐ๋ ์ ๋ํด์ ์ ํ ์ดํด๋ชปํ๋ค. css๊ฐ ์ ๋ง ์ด๋ ต๊ตฌ๋.. javascript๋ง ์ด๋ ค์ด ์ค ์์๋๋ฐ... ๊ธ ์์ง๋ ฅ ๋ค์ด
๊ฒ๋ค๊ฐ ์ด๋ฒ์ฃผ ๋์ ์ ์ ๊ฑฐ์ ๋ชป์์ ๊ทธ๋ฐ์ง ์ค๋ ํผ๋ก๊ฐ ๋ชฐ๋ ค์์ ํ๋ฃจ์ข ์ผ ์ ์ด ์๊นผ๋ค. ํน๊ฐ๋๋์๋ง์ 3์๊ฐ์ด๋ ๋ ์ค๋๋ฐ๋ ์ ๋ ์๊นจ๊ณ ํ๋ฃจ์ข ์ผ ์ถ ์ณ์ ธ์ ๊ณต๋ถ๋ฅผ ๋ชปํ๋ค. ํ๋ฃจ ๋ ๋ฆฐ ๊ธฐ๋ถ... ์๊ฐ์ ์๋๋ฐ ๋ชธ์ ์๋ฐ๋ผ์ฃผ๊ณ ์ด๋์ ์ค๊ฐ์ค๊ฐ ์ด๋ํ๋ผ๊ณ ํ๋๋ณด๋ค. ๋ค์์ฃผ๋ถํฐ๋ ์์ ๋๋๋ฉด ๋ฐ์ ๋๊ฐ์ 30๋ถ์ด๋ผ๋ ๊ฑท๋ค ์์ผ ๋ ๊ฒ ๊ฐ๋ค. ์ฒด๋ ฅ๋ ์๊ณ ์ง์ค๋ ์๋๊ณ ์์ง 2์ฃผ๋ฐ์ ์๋๋๋ฐ ์ด๋ ๊ฒ ๋๋๊น ์์ง๋ ฅ์ด ๊ธ ๋ค์ด ๋๋คใ ใ ใ ใ ใ ใ ์ ์ ์ฐจ๋ฆฌ์ ์ ๋ฐ ์์ฃผํด์ผํ๋๋ฐใ ใ ใ ๋ค์์ฃผ๋ถํฐ๋ ๊ณผ์ ๊น์ง ์๋ค ๊ทธ๋์ ๋ถ๋ด๊ฐ๐ฑ๐ฑ๐ฑ