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

๋ชฉ๋กui์ปดํฌ๋„ŒํŠธ (4)

UI Code Lab

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

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

์ ‘๊ทผ์„ฑ์„ ๊ณ ๋ คํ•œ ์‹ค์ „ ๋ชจ๋‹ฌ ๊ตฌํ˜„๊ธฐ (Modal)

๋ชจ๋‹ฌ์€ UI์—์„œ ์ž์ฃผ ์“ฐ์ด๋Š” ์ปดํฌ๋„ŒํŠธ์ง€๋งŒ, ์ ‘๊ทผ์„ฑ๊นŒ์ง€ ์ฑ™๊ธด ๊ตฌํ˜„์€ ์ƒ๊ฐ๋ณด๋‹ค ๋“œ๋ญ…๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ชจ๋‹ฌ ๊ตฌํ˜„๋ฒ•๋ถ€ํ„ฐ, ์Šคํฌ๋ฆฐ๋ฆฌ๋”์™€ ํ‚ค๋ณด๋“œ ์‚ฌ์šฉ์ž๋„ ๊ณ ๋ คํ•œ ์ ‘๊ทผ์„ฑ ๊ฐœ์„  ํฌ์ธํŠธ๊นŒ์ง€ ๋‹ค๋ค„๋ด…๋‹ˆ๋‹ค. ์‹ค๋ฌด์— ๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์ œ ์ฝ”๋“œ๋„ ํ•จ๊ป˜ ์ œ๊ณตํ•˜๋‹ˆ, ๋ณต์žกํ•œ ํ”„๋ ˆ์ž„์›Œํฌ ์—†์ด ์ˆœ์ˆ˜ JS๋กœ๋„ ์ถฉ๋ถ„ํžˆ ๋ฉ‹์ง„ ์ ‘๊ทผ์„ฑ ๋ชจ๋‹ฌ์„ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”! โœจ ๊ธฐ๋ณธ ๋ชจ๋‹ฌ ๊ตฌํ˜„๊ฐ„๋‹จํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๋ชจ๋‹ฌ์„ ๋„์šฐ๊ณ  ๋‹ซ๋Š” ๊ธฐ๋ณธ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. โœ… HTML ๊ตฌ์กฐ ๋ชจ๋‹ฌ ์—ด๊ธฐ ๋ชจ๋‹ฌ ์ œ๋ชฉ ๋ชจ๋‹ฌ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๋‹ซ๊ธฐ โœ… JS ๊ธฐ๋ณธ ๋กœ์ง const openBtn = document.getElementById('openModal');const closeBtn = document.getElementB..

์ง„ํ–‰ ์ƒํ™ฉ์„ ์‹œ๊ฐํ™”ํ•˜๋Š” ํƒ€์ž„๋ผ์ธ UI ๋งŒ๋“ค๊ธฐ (JavaScript ๊ธฐ๋ฐ˜)

์›น์—์„œ ์‚ฌ์šฉ์ž์˜ ์œ„์น˜์™€ ์ง„ํ–‰ ์ƒํƒœ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” UI๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์— ํฐ ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค. ํŠนํžˆ CAD์™€ ๊ฐ™์€ ๊ธฐ์ˆ  ์ž๋ฃŒ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํŽ˜์ด์ง€์—์„œ๋Š” “์ง€๊ธˆ ๋‚ด๊ฐ€ ์–ด๋–ค ๋‹จ๊ณ„์— ์žˆ๋Š”์ง€”๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜์ฃ . ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” JavaScript์™€ CSS๋งŒ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์ง„ํ–‰ ๋‹จ๊ณ„ ํƒ€์ž„๋ผ์ธ UI๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ’ก ์ง์ ‘ ํ™œ์šฉํ•œ ์˜ˆ์‹œ๋Š” ํ˜„์žฌ CAD ํŽ˜์ด์ง€์˜ ํ๋ฆ„STEP 1: CAD ํŒŒ์ผ ์ค€๋น„ >> STEP 2: CAD ํŒŒ์ผ ๊ฒ€ํ†  >> STEP 3: ์Šน์ธ ๋Œ€๊ธฐ >> STEP 4: ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅ STEP 1๊ณผ STEP 2๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ๋“ฑ๋ก๋œ ์™„๋ฃŒ ๋‹จ๊ณ„๋กœ ๊ฐ™์€ ์ƒ‰์ƒ์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•˜๊ณ , ์Šน์ธ ๋Œ€๊ธฐ ์ƒํƒœ์ธ STEP 3๋Š” ๊ฐ•์กฐ ์• ๋‹ˆ๋ฉ”์ด์…˜์œผ๋กœ ํ‘œํ˜„ํ•ด ์‚ฌ์šฉ์ž์˜ ์ฃผ์˜๋ฅผ ๋Œ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•ด ๋ดค์Šต๋‹ˆ๋‹ค. โœ… ์ฃผ์š”..

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋“œ๋กญ๋‹ค์šด ๊ธฐ๋Šฅ ๋งŒ๋“ค๊ธฐ (Dropdown)

์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๋‹ค ๋ณด๋ฉด ๋ฉ”๋‰ด๋‚˜ ํ•„ํ„ฐ, ์„ค์ • ์ฐฝ ๋“ฑ ๋“œ๋กญ๋‹ค์šด(dropdown) ๊ธฐ๋Šฅ์ด ๊ผญ ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” jQuery ์—†์ด๋„ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•œ ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(dropdown)๋ฅผ ํ™œ์šฉํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ•˜๋ฉด ์—ด๋ฆฌ๊ณ , ๋‹ค์‹œ ํด๋ฆญํ•˜๋ฉด ๋‹ซํžˆ๋Š” ๊ธฐ๋ณธ ๋“œ๋กญ๋‹ค์šด UI๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. โœ… ๋“œ๋กญ๋‹ค์šด์ด๋ž€?๋“œ๋กญ๋‹ค์šด(dropdown)์€ ์‚ฌ์šฉ์ž์˜ ํด๋ฆญ์— ๋”ฐ๋ผ ์„ ํƒ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” UI ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋ฉ”๋‰ด, ์–ธ์–ด ์„ ํƒ ์ฐฝ, ์•Œ๋ฆผ ๋ชฉ๋ก ๋“ฑ์—์„œ ์ž์ฃผ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ› ๏ธ HTML ๊ตฌ์กฐ ๋จผ์ € dropdown์„ ๊ตฌ์„ฑํ•  ๊ธฐ๋ณธ HTML์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค: ๋ฉ”๋‰ด ์—ด๊ธฐ โ–พ ํ™ˆ ์†Œ๊ฐœ ๋ฌธ์˜ ๐ŸŽจ CSS ์Šคํƒ€์ผ๊ธฐ๋ณธ์ ์œผ๋กœ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋Š” ์ˆจ๊ธฐ๊ณ , ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๋ณด์ด๋„๋ก ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค....