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

๋ชฉ๋กUI๊ฐœ๋ฐœ (2)

UI Code Lab

ํƒญ ์ „ํ™˜ ์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆํ™” ์‹ค์ „ ์˜ˆ์ œ

์›น ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด ํƒญ ์ „ํ™˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ผ์ด ์ž์ฃผ ์ƒ๊น๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํžˆ fetch๋กœ HTML์„ ๋ถˆ๋Ÿฌ์™€์„œ innerHTML์— ๋„ฃ๊ณ , ํƒญ ํด๋ฆญ ์‹œ ๋ณด์—ฌ์ฃผ๊ธฐ/์ˆจ๊ธฐ๊ธฐ๋งŒ ํ•˜๋ฉด ์ถฉ๋ถ„ํ•ด ๋ณด์ด์ฃ . ํ•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต๋˜๊ณ , ์ „์—ญ ๋ณ€์ˆ˜ ์ถฉ๋Œ์ด๋‚˜ ํŽ˜์ด์ง€๋ณ„ ๊ด€๋ฆฌ์˜ ๋ถˆํŽธํ•จ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ํ•˜๋‚˜๋‘˜์”ฉ ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ํ•„์š”ํ•œ ๊ฑด ๊ณตํ†ต ๋กœ์ง์„ ๋ชจ๋“ˆํ™”ํ•˜๊ณ , ๊ฐ ํŽ˜์ด์ง€์—์„œ๋Š” ์ตœ์†Œํ•œ์˜ ์„ค์ •๋งŒ ๋‚จ๊ธฐ๋Š” ๊ตฌ์กฐํ™”์ž…๋‹ˆ๋‹ค. 1. ๋ฌธ์ œ ์ƒํ™ฉํƒญ ์ „ํ™˜ ๋กœ์ง์„ ํŽ˜์ด์ง€๋งˆ๋‹ค ์ค‘๋ณต ์ž‘์„ฑ → ์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ค์›€์ „์—ญ ๋ณ€์ˆ˜(cache, loaded)๊ฐ€ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์™€ ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑํŽ˜์ด์ง€๋งˆ๋‹ค ๋‹ค๋ฅธ ํŒŒ์ผ๋งต์„ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๊ณตํ†ต ๋กœ์ง๊ณผ ์„ž์—ฌ ์žˆ์–ด์„œ ๋ถˆํŽธ 2. ํ•ด๊ฒฐ ์ „๋žต๊ณตํ†ต ๋กœ์ง์€ ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ๋กœ ๋ถ„๋ฆฌํŽ˜์ด์ง€๋ณ„๋กœ๋Š” fileMap๋งŒ..

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

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