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

๋ชฉ๋กํ”„๋ก ํŠธ์—”๋“œ (8)

UI Code Lab

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

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

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

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

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

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

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋‚ ์งœ ์„ ํƒ๊ธฐ(Date Picker) ์ง์ ‘ ๋งŒ๋“ค๊ธฐ – ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•

๐Ÿงญ ์™œ ์ง์ ‘ ๋‚ ์งœ ์„ ํƒ๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ• ๊นŒ? ๋Œ€๋ถ€๋ถ„์˜ ์›น ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋‚ ์งœ ์ž…๋ ฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  input [type="date"] ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ๋””์ž์ธ์ด ๋‹ค๋ฅด๊ณ  ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์ฃ . ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋‚ ์งœ ์„ ํƒ๊ธฐ UI๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ› ๏ธ ๊ตฌํ˜„ ๋ชฉํ‘œ๋‹ฌ๋ ฅ UI๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ˜„์žฌ ์›” ๊ธฐ์ค€์œผ๋กœ ๋‚ ์งœ ํ‘œ์‹œ์ด์ „/๋‹ค์Œ ๋‹ฌ ์ด๋™ ๊ธฐ๋Šฅ๋‚ ์งœ ํด๋ฆญ ์‹œ ์„ ํƒ๋œ ๋‚ ์งœ ์ถœ๋ ฅ ๐Ÿงฑ HTML ๊ตฌ์กฐ โ—€ โ–ถ ์ผ์›”ํ™”์ˆ˜๋ชฉ๊ธˆํ†  ์„ ํƒํ•œ ๋‚ ์งœ: ์—†์Œ ๐ŸŽจ CSS ์Šคํƒ€์ผ (๊ฐ„๋‹จ ๋ฒ„์ „) .datepicker { width: 300px; border: 1..

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋งŒ๋“œ๋Š” ์•Œ๋ฆผ(Toast) ์ปดํฌ๋„ŒํŠธ

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