5. ๊ฐค๋Ÿฌ๋ฆฌ ๐Ÿ–ผ

EEuglenaยท2023๋…„ 7์›” 28์ผ
0

JavaScript30

๋ชฉ๋ก ๋ณด๊ธฐ
6/27
post-thumbnail

๋ชฉํ‘œ

flex๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ํŽผ์ณ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฐค๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž.

๋ ˆ์ด์•„์›ƒ + ์Šคํฌ๋ฆฝํŠธ

handlePanelClick

์ด๋ฒˆ ๊ณผ์ œ๋Š” ๋Œ€๋ถ€๋ถ„ CSS ์†์„ฑ์„ ํ™œ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ์ด์•„์›ƒ๊ณผ ์Šคํฌ๋ฆฝํŠธ๋Š” ์ตœ์†Œํ•œ์œผ๋กœ ์ž‘์„ฑํ–ˆ๋‹ค. ๋ ˆ์ด์•„์›ƒ์€ ๊ฐ•์˜์—์„œ ์ œ๊ณตํ•˜๋Š” ๋Œ€๋กœ ๋‹ค์„ฏ ๊ฐœ์˜ ์ด๋ฏธ์ง€ ํŒจ๋„์„ ๋ฐฐ์น˜ํ•˜์˜€๊ณ , ์Šคํฌ๋ฆฝํŠธ๋Š” ํด๋ฆญํ•œ ํŒจ๋„๋งŒ ํŽผ์ณ์ง€๋„๋ก classList๋ฅผ ์ˆ˜์ •ํ•˜์˜€๋‹ค.

๊ธฐ๋ณธ ์ƒํƒœ ์Šคํƒ€์ผ๋ง

baseStyle

๊ฐ•์˜์—์„œ ์š”๊ตฌํ•˜๋Š” ๋””์ž์ธ์„ ์ฐธ๊ณ ํ•˜์—ฌ ํฐํŠธ์™€ ์ด๋ฏธ์ง€๋ฅผ ์ ์šฉํ–ˆ๊ณ , ์ด ๋‘ ๊ฐœ์˜ flex ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ค์ •ํ–ˆ๋‹ค. ๋จผ์ € ๋‹ค์„ฏ ๊ฐœ์˜ ํŒจ๋„์„ ๊ฐ€๋กœ๋กœ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด panels๋ฅผ flex๋กœ ์„ค์ •ํ–ˆ๊ณ , ํŒจ๋„ ์•ˆ์˜ ๊ธ€์ž๋ฅผ ์„ธ๋กœ๋กœ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด panel์„ flex๋กœ ์„ค์ •ํ–ˆ๋‹ค.

์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€

open Class

์—ด๋ฆฐ ์ƒํƒœ์˜ ํŒจ๋„์€ open ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์Šคํƒ€์ผ๋ง ํ•˜์˜€๋‹ค. flex-grow๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด ๋Š˜์–ด๋‚˜๋Š” ๋น„์œจ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๊ธฐ๋ณธ์€ 1์ด๊ณ  ์—ด๋ฆฐ ํŒจ๋„๋งŒ 5๋กœ ์ฃผ์–ด์„œ ์—ด๋ฆฐ ํŒจ๋„์ด ์ฐจ์ง€ํ•˜๋Š” ๋น„์œจ์„ ๋†’๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ํ‰์†Œ์—๋Š” ๊ฐ€์šด๋ฐ ๊ธ€์ž๋งŒ ๋ณด์ด๊ฒŒ ํ•˜๊ณ  ์œ„ ์•„๋ž˜ ์ค„์€ ํ™”๋ฉด ๋ฐ–์œผ๋กœ ์ด๋™์‹œ์ผฐ๋‹ค๊ฐ€, ํด๋ฆญ๋˜๋ฉด ์›๋ž˜ ์œ„์น˜๋กœ ๋Œ์•„์™€ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•˜์˜€๋‹ค.

transition

ํŒจ๋„์ด ๋ฐ”๋กœ ์—ด๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‚ด์ง ๋‹ซํ˜”๋‹ค๊ฐ€ ์—ด๋ฆฌ๋Š” ํฌ์ธํŠธ๋ฅผ ์ฃผ๊ธฐ ์œ„ํ•ด ํŠธ๋žœ์ง€์…˜์œผ๋กœ ๋ฒ ์ง€์–ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

open example

์ด๋ ‡๊ฒŒ ํ•ด์„œ ํŒจ๋„์ด ์—ด๋ฆฐ ์ƒํƒœ๋Š” ์œ„์™€ ๊ฐ™์ด ๋งŒ๋“ค์–ด์กŒ๋‹ค. ์ดํ›„์— ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ ธ์„ ๋•Œ ๊ทธ๋ฆผ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ธ€์ž ํฌ๊ธฐ๋‚˜ ๊ทธ๋ฆผ์ž ๊ฐ™์€ ์„ธ์„ธํ•œ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•˜์—ฌ ์™„์„ฑํ•˜์˜€๋‹ค.

์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ 

ํ™”๋ฉด์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์—ฐ์ถœํ•˜๊ธฐ ์œ„ํ•ด flex์˜ ๋‹ค์–‘ํ•œ ์†์„ฑ์ธ flex-direction, flex(flex-basis/grow/shrink), align/justify ๋“ฑ์„ ์ฐพ์•„๋ณด์•˜๋‹ค. ๋น„๊ต์  ์ตœ์‹  ๋ฌธ๋ฒ•์ด๋ผ ๊ทธ๋Ÿฐ์ง€ ๋‹ค๋ฅธ ๋””์Šคํ”Œ๋ ˆ์ด ์˜ต์…˜์ธ block, inline, grid ๋“ฑ์— ๋น„ํ•ด ์ž๋ฃŒ๊ฐ€ ์ ์—ˆ์ง€๋งŒ ์ด๋ฏธ์ง€ ์ž๋ฃŒ์™€ ๊ฐœ๊ตฌ๋ฆฌ ๊ฒŒ์ž„์„ ํ†ตํ•ด ๊ฐœ๋…์„ ์ตํž ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํŠนํžˆ ๊ฐœ๊ตฌ๋ฆฌ ๊ฒŒ์ž„์€ CSS๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๋ฉฐ ๋ณ€ํ•˜๋Š” ๋ชจ์Šต์„ ๊ฒŒ์ž„์ฒ˜๋Ÿผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด ๊ธฐ๋ณธ๊ธฐ๋ฅผ ์ตํžˆ๊ธฐ ์ข‹์•˜๋‹ค. grid์— ๋น„ํ•ด ๊ฐ„ํŽธํ•˜๊ณ  ๊ฐ•๋ ฅํ•˜๊ธฐ๋Š” ํ•˜๋‚˜ ์ง๊ด€์„ฑ์€ ๋–จ์–ด์ ธ์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉํ•ด๋ณด๋ฉฐ ํ™•์‹คํžˆ ์ดํ•ดํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

ํŠธ๋žœ์ง€์…˜์œผ๋กœ๋Š” ๊ธฐ๋ณธ ์ œ๊ณต๋˜๋Š” ease ํ•จ์ˆ˜๋“ค๋งŒ์„ ์‚ฌ์šฉํ–ˆ์—ˆ๋Š”๋ฐ, ๊ฐ•์˜์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฒ ์ง€์–ด ํ•จ์ˆ˜๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•ด ๋ณด์•˜๋‹ค. ์—ฌ๋Ÿฌ ์‚ฌ์ดํŠธ์—์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ˆ˜์ •ํ•ด๊ฐ€๋ฉฐ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋ฏธ๋ฆฌ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ๊ตฌํ˜„ํ•˜๊ธฐ ํŽธ๋ฆฌํ–ˆ๋‹ค.

์˜ˆ์‹œ ์‚ฌ์ดํŠธ

์†Œ์Šค ์ฝ”๋“œ

Visit Github Repository

0๊ฐœ์˜ ๋Œ“๊ธ€