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

๋ชฉ๋ก์ž๋ฐ”์Šคํฌ๋ฆฝํŠธUI (20)

UI Code Lab

๐Ÿงฒ ์Šคํฌ๋กค ์œ„์น˜์— ๋”ฐ๋ผ ๊ณ ์ •๋˜๋Š” UI ๋งŒ๋“ค๊ธฐ – Sticky ์š”์†Œ ๊ตฌํ˜„ ์™„์ „ ์ •๋ณต

์Šคํฌ๋กค์„ ๋‚ด๋ฆฌ๋ฉด ๋ฉ”๋‰ด๋‚˜ ํ—ค๋”๊ฐ€ ํ™”๋ฉด ์ƒ๋‹จ์— ๊ณ ์ •๋˜์–ด ๊ณ„์† ๋ณด์ด๋Š” ๊ฒฝํ—˜, ๋‹ค๋“ค ํ•œ ๋ฒˆ์ฏค ํ•ด๋ณด์…จ์ฃ ? ์ด๋Ÿฐ ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž ํƒ์ƒ‰ ํšจ์œจ์„ ๋†’์ด๊ณ , ์ƒํ˜ธ์ž‘์šฉ ์š”์†Œ์— ์ง‘์ค‘๋„๋ฅผ ๋†’์—ฌ์ฃผ๋Š” UI ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜์˜ˆ์š”. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” position: sticky ์™€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์šฉํ•ด ์Šคํฌ๋กค ์œ„์น˜์— ๋”ฐ๋ผ ๊ณ ์ •๋˜๋Š” ์š”์†Œ(Sticky UI) ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๐ŸŽฏ ๊ตฌํ˜„ ๋ชฉํ‘œํŠน์ • ์˜์—ญ์—์„œ ์Šคํฌ๋กค ์‹œ ์š”์†Œ ๊ณ ์ •์ˆœ์ˆ˜ CSS ๋˜๋Š” JS๋กœ ๊ตฌํ˜„๋ฐ˜์‘ํ˜• ์›น์—์„œ๋„ ์œ ์—ฐํ•˜๊ฒŒ ์ž‘๋™ โœ๏ธ ๊ธฐ๋ณธ CSS ๋ฐฉ์‹ – position: sticky ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ์‹์€ CSS์˜ position: sticky ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. .sticky { position: sticky; top: 0; /* ํ™”๋ฉด ์œ„์—์„œ ์–ผ๋งˆ๋‚˜ ๋–จ์–ด์ง„ ์œ„์น˜์— ๊ณ ์ •..

๐Ÿ“ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด ์Šคํฌ๋กค ๋“ฑ์žฅ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋งŒ๋“ค๊ธฐ – ์‹ค์ „ ์›น UI ์˜ˆ์ œ

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

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

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

๐ŸŽจ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด CSS + JS๋กœ ๋ถ€๋“œ๋Ÿฌ์šด UI ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋งŒ๋“ค๊ธฐ

์š”์ฆ˜ ์›น์‚ฌ์ดํŠธ ๋ณด๋ฉด ์ธํ„ฐํŽ˜์ด์Šค์— ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์‚ด์ง ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ํ™• ๋‹ค๋ฅด๊ฒŒ ๋А๊ปด์ง€์ž–์•„์š”? ๊ทผ๋ฐ ๋ง‰์ƒ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด GSAP, Framer Motion ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ถ€ํ„ฐ ์ƒ๊ฐ๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ฃ . ๊ทธ๋Ÿฐ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด๋„ CSS์™€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑฐ, ์•Œ๊ณ  ๊ณ„์…จ๋‚˜์š”? ์˜ค๋Š˜์€ ์ •๋ง ๊ฐ€๋ณ๊ฒŒ, ํ•˜์ง€๋งŒ ํ™•์‹คํ•˜๊ฒŒ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ฆด๊ฒŒ์š”! โœ… ์™œ ๊ตณ์ด CSS + JS๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“ค๊นŒ?๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด:๊ฐ€๋ณ๊ณ  ๋น ๋ฆ…๋‹ˆ๋‹ค! ๋กœ๋”ฉ ์†๋„ ๋น ๋ฅธ ์›น์ด ์œ ๋ฆฌํ•˜๋‹ˆ๊นŒ์š”.์กฐ์ ˆ์ด ์ž์œ ๋กญ์Šต๋‹ˆ๋‹ค! CSS๋กœ ๋ชจ์–‘ ๋งŒ๋“ค๊ณ  JS๋กœ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ œ์–ด๋„ ๊ฐ€๋Šฅํ•ด์š”.๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜๋„ ๊ดœ์ฐฎ์•„์š”! ๋Œ€๋ถ€๋ถ„์˜ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์•„์ฃผ ์ž˜ ์ง€์›๋ฉ๋‹ˆ๋‹ค.์˜ˆ์˜๋ฉด์„œ๋„ ์ตœ์ ํ™”๋œ ์›น์„ ๋งŒ๋“ค..

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

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