| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ | 
|---|---|---|---|---|---|---|
| 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 | 
- ๋น๋ณด๋์ฐจํธ
 - js์คํฌ๋กค์ด๋ฒคํธ
 - ์คํฌ๋กค์ ๋๋ฉ์ด์ 
 - ์น๋์์ธ
 - ์นUI
 - ๊ณจ๋
 - ๋คํฌ๋ชจ๋
 - ์ ๊ทผ์ฑ
 - ๋ทํ๋ฆญ์ค์ ๋๋ฉ์ด์ 
 - kpopdemonhunters
 - ui์ปดํฌ๋ํธ
 - ํํธ๋ฆญ์ค
 - JavaScript
 - ํ๋ก ํธ์๋
 - ์น์ ๊ทผ์ฑ
 - ๊ฐ์์์ด๋
 - UIUX
 - ๋ฐ๋๋ผjs
 - ์น๊ฐ๋ฐ
 - ์ผ๋ฐํ
 - Golden
 - ์๋ฐ์คํฌ๋ฆฝํธui
 - ๋คํฌ๋ชจ๋ํ ๊ธ
 - ๋ทํ๋ฆญ์คost
 - ๋ฐ๋ง์ผํ
 - ์๋ฐ์คํฌ๋ฆฝํธ
 - ์ฌ์๋ณด์ด์ฆ
 - ์ผ์ดํ๋ฐ๋ชฌํํฐ์ค
 - ๋ฐ๋๋ผ์คํฌ๋ฆฝํธ
 - UX๋์์ธ
 
- Today
 
- Total
 
๋ชฉ๋ก์๋ฐ์คํฌ๋ฆฝํธ (8)
UI Code Lab
์น์ฌ์ดํธ๋ฅผ ์ด์ฉํ๋ ํ๊ฒฝ์ด ๋ค์ํด์ง๋ฉด์, ์ด์ฉ์๋ค์ ๋ฐ๊ณ ํ๋ คํ ์ธํฐํ์ด์ค๋ณด๋ค ๋์ ํธ์ํ ์ด๋์ด ํ ๋ง๋ฅผ ์ ํธํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ก์ต๋๋ค. ํนํ ๋ฐค ์๊ฐ์ด๋ ์กฐ๋ช ์ด ๋ฎ์ ๊ณณ์์ ์ ์ํ ๊ฒฝ์ฐ, ํ๋ฉด์ด ์ง๋์น๊ฒ ๋ฐ์ผ๋ฉด ์์ผ์ ๋ถ๋ด์ ์ค ์ ์๊ธฐ ๋๋ฌธ์ด์ฃ . ์ด๋ฒ ๊ธ์์๋ ์์ ์๋ฐ์คํฌ๋ฆฝํธ(๋ฐ๋๋ผ JS)๋ง์ผ๋ก ๊ฐ๋จํ๋ฉด์๋ ์ง๊ด์ ์ธ ๋คํฌ ๋ชจ๋ ํ ๊ธ ๊ธฐ๋ฅ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค. ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด ๊ตฌํํ ์ ์๊ณ , ์ฌ์ฉ์ ์ค์ ์ ๊ธฐ์ตํ๋ ๊ธฐ๋ฅ๊น์ง ํฌํจ๋์ด ์์ด ์ค๋ฌด์๋ ์ถฉ๋ถํ ์ ์ฉํ ์ ์์ต๋๋ค. ๐งฑ HTML ๊ตฌ์ฑ – ๊ฐ์ฅ ๋จ์ํ ์์๋จผ์  ํ ๋ง ์ ํ ๋ฒํผ์ ํ๋ ์ถ๊ฐํด์ค๋๋ค. ๐ / ๐ ๋ชจ๋ ์ ํ ์ด ๋ฒํผ์ ๋ผ์ดํธ/๋คํฌ ๋ชจ๋ ์ ํ์ ๋ด๋นํ๋ฉฐ, id ์์ฑ์ ํตํด ์คํฌ๋ฆฝํธ์์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋๋ก ์ค์ ํฉ..
์น์ฌ์ดํธ๋ฅผ ์ฝ๋ค ๋ณด๋ฉด ์๋จ์ ์์ ๋ฐ๊ฐ ์ค๋ฅด๋ฅต ์ฐจ์ค๋ฅด๋ ๊ฑธ ๋ณธ ์  ์์ผ์ ๊ฐ์? ์ด๊ฑด ๋ฐ๋ก ์คํฌ๋กค ํผ์ผํธ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋ ์ค ๋ฐ(progress bar)์ ๋๋ค. ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์ผ๋ง๋ ์ฝ์๋์ง ์ง๊ด์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ UI๋ก, ์ฌ์ฉ์ ๊ฒฝํ(UX)์ ๋์ด๋ ๋ฐ ํจ๊ณผ์ ์ด์์. ์ด๋ฒ ๊ธ์์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด ๋ฐ๋๋ผ JavaScript๋ง์ผ๋ก ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค. ๐ฏ ๊ตฌํ ๋ชฉํ์ฌ์ฉ์๊ฐ ์คํฌ๋กคํ ๋น์จ์ ๋ฐ๋ผ ์๋จ ๋ฐ์ ๋๋น๊ฐ ์ค์๊ฐ์ผ๋ก ๋ณํจHTML, CSS, JavaScript๋ง ์ฌ์ฉ๋ฐ์ํ ์น์์๋ ์์ฐ์ค๋ฝ๊ฒ ์๋ ๐งฉ HTML ๊ตฌ์กฐ progress-container: ์ ์ฒด ํ๋ก๊ทธ๋ ์ค ๋ฐ ์์ญprogress-bar: ์ค์  ๋๋น๊ฐ ๋ณํ๋ ๋ฐ ์์ ๐จ CSS ์คํ์ผ๋ง .progress-container..
์์ฆ ์น์ฌ์ดํธ ๋ณด๋ฉด ์ธํฐํ์ด์ค์ ์ ๋๋ฉ์ด์ ์ด ์ด์ง ๋ค์ด๊ฐ๋ ๊ฒ๋ง์ผ๋ก๋ ํ ๋ค๋ฅด๊ฒ ๋๊ปด์ง์์์? ๊ทผ๋ฐ ๋ง์ ๊ตฌํํ๋ ค๋ฉด GSAP, Framer Motion ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ถํฐ ์๊ฐ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ฃ . ๊ทธ๋ฐ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด๋ CSS์ ์๋ฐ์คํฌ๋ฆฝํธ๋ง์ผ๋ก ์ถฉ๋ถํ ๋ถ๋๋ฝ๊ณ ์์ฐ์ค๋ฌ์ด ์ ๋๋ฉ์ด์ ์ ๋ง๋ค ์ ์๋ค๋ ๊ฑฐ, ์๊ณ ๊ณ์ จ๋์? ์ค๋์ ์ ๋ง ๊ฐ๋ณ๊ฒ, ํ์ง๋ง ํ์คํ๊ฒ ์ ๋๋ฉ์ด์ ์ ๊ตฌํํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ ค๋๋ฆด๊ฒ์! โ ์ ๊ตณ์ด CSS + JS๋ก ์ ๋๋ฉ์ด์ ์ ๋ง๋ค๊น?๊ฐ๋จํ ๋งํ๋ฉด:๊ฐ๋ณ๊ณ ๋น ๋ฆ ๋๋ค! ๋ก๋ฉ ์๋ ๋น ๋ฅธ ์น์ด ์ ๋ฆฌํ๋๊น์.์กฐ์ ์ด ์์ ๋กญ์ต๋๋ค! CSS๋ก ๋ชจ์ ๋ง๋ค๊ณ JS๋ก ์ํฉ์ ๋ฐ๋ผ ์ ์ด๋ ๊ฐ๋ฅํด์.๋ธ๋ผ์ฐ์  ํธํ๋ ๊ด์ฐฎ์์! ๋๋ถ๋ถ์ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์์ฃผ ์ ์ง์๋ฉ๋๋ค.์์๋ฉด์๋ ์ต์ ํ๋ ์น์ ๋ง๋ค..
๐งญ ์ ์ง์  ๋ ์ง ์ ํ๊ธฐ๋ฅผ ๋ง๋ค์ด์ผ ํ ๊น? ๋๋ถ๋ถ์ ์น ํ๋ก์ ํธ์์๋ ๋ ์ง ์ ๋ ฅ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฌผ๋ก input [type="date"] ๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง, ๋ธ๋ผ์ฐ์ ๋ง๋ค ๋์์ธ์ด ๋ค๋ฅด๊ณ ์ปค์คํฐ๋ง์ด์ง์ด ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์ฃ . ๊ทธ๋์ ์ด๋ฒ ๊ธ์์๋ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ ์ง ์ ํ๊ธฐ UI๋ฅผ ์ง์  ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค. ๐ ๏ธ ๊ตฌํ ๋ชฉํ๋ฌ๋ ฅ UI๋ฅผ ๋์ ์ผ๋ก ์์ฑํ์ฌ ์ ๊ธฐ์ค์ผ๋ก ๋ ์ง ํ์์ด์ /๋ค์ ๋ฌ ์ด๋ ๊ธฐ๋ฅ๋ ์ง ํด๋ฆญ ์ ์ ํ๋ ๋ ์ง ์ถ๋ ฅ ๐งฑ HTML ๊ตฌ์กฐ โ โถ ์ผ์ํ์๋ชฉ๊ธํ ์ ํํ ๋ ์ง: ์์ ๐จ CSS ์คํ์ผ (๊ฐ๋จ ๋ฒ์ ) .datepicker { width: 300px; border: 1..
๐ ๊ฐ์ Toast ์๋ฆผ์ ์ฌ์ฉ์์๊ฒ ๋น ๋ฅด๊ณ ๊ฐ๋จํ ํผ๋๋ฐฑ์ ์ ๊ณตํ๋ UI ์์์ ๋๋ค. ์๋ฅผ ๋ค์ด “์ ์ฅ๋์์ต๋๋ค”์ฒ๋ผ ํ๋ฉด ์๋จ์ด๋ ํ๋จ์ ์งง๊ฒ ๋ํ๋๋ ์๋ฆผ ๋ง์ด์ฃ . ์ด ๊ธ์์๋ ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ(Vanilla JS)๋ง์ผ๋ก ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ toast ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๋ฒ์ ์๊ฐํฉ๋๋ค. โ ์์ JS๋ก ๊ฐ๋ณ๊ฒ ๊ตฌํโ ์์น, ์ง์ ์๊ฐ, ์ ๋๋ฉ์ด์  ์ค์  ๊ฐ๋ฅโ ์คํฌ๋ฆฐ ๋ฆฌ๋ ์ฌ์ฉ์๋ ๊ณ ๋ คํ ์ ๊ทผ์ฑ ๐ก Toast UI๋?Toast๋ ํ๋ฉด ํ์ชฝ์ ๋ช ์ด๊ฐ ํ์๋๋ ์ผ์์ ์ธ ๋ฉ์์ง์ ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ณ๋์ ์กฐ์ ์์ด ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์์ด UX ํฅ์์ ํจ๊ณผ์ ์ด์ฃ . ๐ ์์ฃผ ์ฐ์ด๋ ์ํฉ ์์ํผ ์ ์ถ ํ “์ ์ถ์ด ์๋ฃ๋์์ต๋๋ค”๋ณต์ฌ ๋ฒํผ ํด๋ฆญ ์ “ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ๋จ”์ ์ฅ, ์ญ์ , ์ค๋ฅ ์๋ด ๋ฑ ๐ ๏ธ HTML..
๋ชจ๋ฌ์ UI์์ ์์ฃผ ์ฐ์ด๋ ์ปดํฌ๋ํธ์ง๋ง, ์ ๊ทผ์ฑ๊น์ง ์ฑ๊ธด ๊ตฌํ์ ์๊ฐ๋ณด๋ค ๋๋ญ ๋๋ค. ์ด ๊ธ์์๋ ๊ธฐ๋ณธ์ ์ธ ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ฌ ๊ตฌํ๋ฒ๋ถํฐ, ์คํฌ๋ฆฐ๋ฆฌ๋์ ํค๋ณด๋ ์ฌ์ฉ์๋ ๊ณ ๋ คํ ์ ๊ทผ์ฑ ๊ฐ์ ํฌ์ธํธ๊น์ง ๋ค๋ค๋ด ๋๋ค. ์ค๋ฌด์ ๋ฐ๋ก ์ ์ฉํ ์ ์๋ ์์  ์ฝ๋๋ ํจ๊ป ์ ๊ณตํ๋, ๋ณต์กํ ํ๋ ์์ํฌ ์์ด ์์ JS๋ก๋ ์ถฉ๋ถํ ๋ฉ์ง ์ ๊ทผ์ฑ ๋ชจ๋ฌ์ ๋ง๋ค์ด๋ณด์ธ์! โจ ๊ธฐ๋ณธ ๋ชจ๋ฌ ๊ตฌํ๊ฐ๋จํ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ฒํผ ํด๋ฆญ ์ ๋ชจ๋ฌ์ ๋์ฐ๊ณ ๋ซ๋ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ ๋๋ค. โ HTML ๊ตฌ์กฐ ๋ชจ๋ฌ ์ด๊ธฐ ๋ชจ๋ฌ ์ ๋ชฉ ๋ชจ๋ฌ ๋ด์ฉ์ ๋๋ค. ๋ซ๊ธฐ โ JS ๊ธฐ๋ณธ ๋ก์ง const openBtn = document.getElementById('openModal');const closeBtn = document.getElementB..