๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๋ฐ”๋‹๋ผjs (9)

UI Code Lab

๐ŸŒ™ ๋‹คํฌ ๋ชจ๋“œ ํ† ๊ธ€ ๊ธฐ๋Šฅ ๋งŒ๋“ค๊ธฐ – ๋ฐ”๋‹๋ผ JS๋กœ UX ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ

์š”์ฆ˜ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋ฉด ๋‹คํฌ ๋ชจ๋“œ ๊ธฐ๋Šฅ์ด ๊ธฐ๋ณธ์ฒ˜๋Ÿผ ํƒ‘์žฌ๋˜์–ด ์žˆ์ฃ . ๋ˆˆ์˜ ํ”ผ๋กœ๋ฅผ ์ค„์ด๊ณ , ์‚ฌ์šฉ์ž์˜ ํ™˜๊ฒฝ์— ๋งž์ถฐ ํ…Œ๋งˆ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๋‹คํฌ ๋ชจ๋“œ ํ† ๊ธ€ ๊ธฐ๋Šฅ์€ UX๋ฅผ ๋†’์ด๋Š” ๋ฐ ๋งค์šฐ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด ๋ฐ”๋‹๋ผ JavaScript์™€ CSS ๋ณ€์ˆ˜๋งŒ์œผ๋กœ ๋‹คํฌ ๋ชจ๋“œ ํ† ๊ธ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. โœ… ๊ตฌํ˜„ ๋ชฉํ‘œ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๋ผ์ดํŠธ ↔ ๋‹คํฌ ๋ชจ๋“œ ์ „ํ™˜CSS ๋ณ€์ˆ˜(--color, --bg)๋ฅผ ํ™œ์šฉํ•œ ํ…Œ๋งˆ ์Šคํƒ€์ผ๋งJavaScript๋กœ data-theme ์†์„ฑ ์ œ์–ด๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์‚ฌ์šฉ์ž ํ…Œ๋งˆ ์ €์žฅ ๐Ÿงฑ HTML ๊ตฌ์กฐ input[type="checkbox"]๋กœ ํ† ๊ธ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„label๊ณผ span.slider๋กœ ์Šคํƒ€์ผ๋ง ๐ŸŽจ CSS ์Šคํƒ€์ผ :root { --bg-color: #ffff..

๐ŸŒ™ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽธ์•ˆํ•จ์„ ์ œ๊ณตํ•˜๋Š” ์›น – ๋ฐ”๋‹๋ผ JS๋กœ ๋‹คํฌ ๋ชจ๋“œ ์ „ํ™˜ ๊ตฌํ˜„ํ•˜๊ธฐ

์›น์‚ฌ์ดํŠธ๋ฅผ ์ด์šฉํ•˜๋Š” ํ™˜๊ฒฝ์ด ๋‹ค์–‘ํ•ด์ง€๋ฉด์„œ, ์ด์šฉ์ž๋“ค์€ ๋ฐ๊ณ  ํ™”๋ คํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ณด๋‹ค ๋ˆˆ์— ํŽธ์•ˆํ•œ ์–ด๋‘์šด ํ…Œ๋งˆ๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์กŒ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋ฐค ์‹œ๊ฐ„์ด๋‚˜ ์กฐ๋ช…์ด ๋‚ฎ์€ ๊ณณ์—์„œ ์ ‘์†ํ•  ๊ฒฝ์šฐ, ํ™”๋ฉด์ด ์ง€๋‚˜์น˜๊ฒŒ ๋ฐ์œผ๋ฉด ์‹œ์•ผ์— ๋ถ€๋‹ด์„ ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(๋ฐ”๋‹๋ผ JS)๋งŒ์œผ๋กœ ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ์ง๊ด€์ ์ธ ๋‹คํฌ ๋ชจ๋“œ ํ† ๊ธ€ ๊ธฐ๋Šฅ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ณ , ์‚ฌ์šฉ์ž ์„ค์ •์„ ๊ธฐ์–ตํ•˜๋Š” ๊ธฐ๋Šฅ๊นŒ์ง€ ํฌํ•จ๋˜์–ด ์žˆ์–ด ์‹ค๋ฌด์—๋„ ์ถฉ๋ถ„ํžˆ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿงฑ HTML ๊ตฌ์„ฑ – ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ์‹œ์ž‘๋จผ์ € ํ…Œ๋งˆ ์ „ํ™˜ ๋ฒ„ํŠผ์„ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. ๐ŸŒž / ๐ŸŒš ๋ชจ๋“œ ์ „ํ™˜ ์ด ๋ฒ„ํŠผ์€ ๋ผ์ดํŠธ/๋‹คํฌ ๋ชจ๋“œ ์ „ํ™˜์„ ๋‹ด๋‹นํ•˜๋ฉฐ, id ์†์„ฑ์„ ํ†ตํ•ด ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ฉ..

๐Ÿ“Š ์Šคํฌ๋กค ํผ์„ผํŠธ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ” ๋งŒ๋“ค๊ธฐ – ๋ฐ”๋‹๋ผ JS๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์‹ค์ „ UI

์›น์‚ฌ์ดํŠธ๋ฅผ ์ฝ๋‹ค ๋ณด๋ฉด ์ƒ๋‹จ์— ์–‡์€ ๋ฐ”๊ฐ€ ์Šค๋ฅด๋ฅต ์ฐจ์˜ค๋ฅด๋Š” ๊ฑธ ๋ณธ ์  ์žˆ์œผ์‹ ๊ฐ€์š”? ์ด๊ฑด ๋ฐ”๋กœ ์Šคํฌ๋กค ํผ์„ผํŠธ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ”(progress bar)์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์–ผ๋งˆ๋‚˜ ์ฝ์—ˆ๋Š”์ง€ ์ง๊ด€์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” UI๋กœ, ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX)์„ ๋†’์ด๋Š” ๋ฐ ํšจ๊ณผ์ ์ด์—์š”. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด ๋ฐ”๋‹๋ผ JavaScript๋งŒ์œผ๋กœ ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๐ŸŽฏ ๊ตฌํ˜„ ๋ชฉํ‘œ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋กคํ•œ ๋น„์œจ์— ๋”ฐ๋ผ ์ƒ๋‹จ ๋ฐ”์˜ ๋„ˆ๋น„๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณ€ํ•จHTML, CSS, JavaScript๋งŒ ์‚ฌ์šฉ๋ฐ˜์‘ํ˜• ์›น์—์„œ๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ž‘๋™ ๐Ÿงฉ HTML ๊ตฌ์กฐ progress-container: ์ „์ฒด ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ” ์˜์—ญprogress-bar: ์‹ค์ œ ๋„ˆ๋น„๊ฐ€ ๋ณ€ํ•˜๋Š” ๋ฐ” ์š”์†Œ ๐ŸŽจ CSS ์Šคํƒ€์ผ๋ง .progress-container..

๐ŸŽฏ Fullpage ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• – ์ˆœ์ˆ˜ JavaScript๋กœ ์‹คํ˜„ํ•˜๋Š” ์Šคํฌ๋กค ์ธํ„ฐํŽ˜์ด์Šค

โœ… ๊ฐœ์š”๋งŽ์€ ์›น์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ’€ํŽ˜์ด์ง€(Fullpage) ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ง๊ด€์ ์œผ๋กœ ๋งŒ๋“ค๊ณ , ์ฝ˜ํ…์ธ ์— ๋ชฐ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ fullPage.js์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์ง€๋งŒ, ์ˆœ์ˆ˜ JavaScript๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํžˆ ๊ฐ€๋ณ๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ๋ฐ”๋‹๋ผ JS ๊ธฐ๋ฐ˜์˜ fullpage ์›น์‚ฌ์ดํŠธ UI๋ฅผ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๊ณผ์ •์„ ์˜ˆ์ œ ์ค‘์‹ฌ์œผ๋กœ ์ž์„ธํžˆ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“ฆ ์™œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด ์ง์ ‘ ๊ตฌํ˜„ํ• ๊นŒ?์„ฑ๋Šฅ ์ตœ์ ํ™”: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ถˆํฌํ•จ์œผ๋กœ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„ ๊ฐœ์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ์ž์œ ๋„: ๋‚ด๊ฐ€ ์ง์ ‘ ๋งŒ๋“  ์ฝ”๋“œ๋กœ ์›ํ•˜๋Š” ๋Œ€๋กœ ์ˆ˜์ • ๊ฐ€๋Šฅํ•™์Šต ํšจ๊ณผ: ์Šคํฌ๋กค ์ด๋ฒคํŠธ์™€ UI ํ๋ฆ„ ์ดํ•ด๋„๊ฐ€ ๋†’์•„์ง ๐Ÿงฑ HTML ๋ฐ CSS ๊ธฐ๋ณธ ๊ตฌ์กฐ Section 1 Section 2..

๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ UI ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ํ•˜๊ธฐ – ์‹ค์ „ ์‚ฌ๋ก€ ์ค‘์‹ฌ

์›น UI์—์„œ ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ์ธํ„ฐํŽ˜์ด์Šค(Drag and Drop UI) ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ ์ฒจ๋ถ€, ๋ฆฌ์ŠคํŠธ ์ •๋ ฌ, ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์„ฑ ๋“ฑ ๋‹ค์–‘ํ•œ ์‹ค๋ฌด ์‚ฌ๋ก€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ด ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX)์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(Vanilla JavaScript)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์‹ค์ „ ์‚ฌ๋ก€๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ UI๋ฅผ ๊ตฌํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. โœ… Gmail ์Šคํƒ€์ผ์˜ ํŒŒ์ผ ์ฒจ๋ถ€ ๋“œ๋กญ์กดโœ… TODO ์•ฑ์—์„œ ํ•  ์ผ ์ˆœ์„œ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅโœ… ๋Œ€์‹œ๋ณด๋“œ ์œ„์ ฏ ์œ„์น˜ ์ด๋™ UI ๐Ÿ“‚ 1. ํŒŒ์ผ ์ฒจ๋ถ€ ๋“œ๋กญ์กด UI – Gmail ์Šคํƒ€์ผ ๊ตฌํ˜„ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ๋ฐฉ์‹์œผ๋กœ ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ•  ์ˆ˜ ์žˆ๋Š” UI๋Š” ์ด๋ฉ”์ผ, ๊ฒŒ์‹œํŒ, ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ ๋“ฑ์—์„œ ๋งŽ์ด ์‚ฌ..