๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ReactNative

[๋ฆฌ์•กํŠธ๋„ค์ดํ‹ฐ๋ธŒ]flex ? height ? ๋ ˆ์ด์•„์›ƒ์žก๊ธฐ ์ด์ •๋ฆฌ

by IworldT 2021. 8. 31.
๋ฐ˜์‘ํ˜•

๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ ๊ณต๋ถ€ 5์ผ์ฐจ! ์ปดํฌ๋„ŒํŠธ์™€ ๊ทธ ์†์„ฑ๋“ค์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด์•˜์œผ๋‹ˆ, ์ด์ œ๋Š” ๊ทธ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์Šคํƒ€์ผ ์†์„ฑ๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋Š” ์ฐจ๋ก€์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์Šคํƒ€์ผ ์†์„ฑ๊ณผ ๊ฑฐ์˜ ๊ฐ™๋‹ค๊ณ  ๋ณด๋ฉด ๋˜๋‹ˆ, ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž์ธ ๋‚ด๊ฒŒ๋„ ์•ฑ ๊ฐœ๋ฐœ์ด ํ•œ์ธต ๋” ์‰ฌ์šด ๊ฒƒ ๊ฐ™๋‹ค.

 

JS style, JavaScript style, React style, ReactNative style, ๋ฆฌ์•กํŠธ๋„ค์ดํ‹ฐ๋ธŒ ์Šคํƒ€์ผ ์†์„ฑ, flex, height

 

flex๋ž€?

๋ถ€๋ชจ์ปดํฌ๋„ŒํŠธ์˜ ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋น„์œจ๋กœ ๋‚˜๋ˆ„์–ด ๋†’์ด/๋„ˆ๋น„๋ฅผ ์„ค์ •ํ•ด์ฃผ๋Š” ๋งค์šฐ ํŽธ๋ฆฌํ•œ ์˜ต์…˜์ด๋‹ค. ๋‹ค์Œ์˜ ๊ทธ๋ฆผ์œผ๋กœ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„๋ฌด๋Ÿฐ ๋†’์ด ์Šคํƒ€์ผ์„ ์ ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ปดํฌ๋„ŒํŠธ๋Š” ํ•„์š”ํ•œ ์ตœ์†Œ ๋†’์ด๋งŒ์„ ๊ฐ€์ง€๊ฒŒ ๋˜์–ด ๋งจ ์ฒซ๋ฒˆ ์งธ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์Œ“์ด๊ฒŒ ๋˜๊ณ , ๋ฐ‘์— ๋นˆ ๊ณต๊ฐ„์ด ์ƒ๊ธด๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Contents์— flex:1 ์†์„ฑ์„ ์ฃผ๊ฒŒ ๋˜๋ฉด, ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ(ํฐ ์‚ฌ๊ฐํ˜•)์˜ ๋†’์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋‘ ์ฑ„์šฐ๊ฒ ๋‹ค๋Š” ๋œป์ธ๋ฐ, ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋‹ค๋ฅธ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋“ค์–ด์˜ฌ ๋†’์ด๋ฅผ ์ œ์™ธํ•œ ๋ถ€๋ถ„์„ ๋ชจ๋‘ ์ฑ„์šฐ๊ฒ ๋‹ค๋Š” ๋œป์ด๋‹ค.

๊ทธ๋Ÿผ ๋‹ค์Œ Bottom์—๋„ ๊ฐ™์ด flex:1 ์†์„ฑ์„ ์ฃผ๊ฒŒ ๋˜๋ฉด, Contents์™€ 1:1 ๋น„์œจ๋กœ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ฑ„์šฐ๊ฒŒ ๋œ๋‹ค.

๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ 120px์ด๊ณ  Top์ด 20px์ด๋ผ๋ฉด, ๋ถ€๋ชจ(120px)-Top(20px)=๋‚˜๋จธ์ง€(100px)๋ฅผ Content์™€ Bottom์ด 1:1๋กœ ๋‚˜๋ˆ„์–ด์„œ ๋†’์ด๋ฅผ ๊ฐ–๊ฒŒ ๋˜๋ฏ€๋กœ 50px์”ฉ ๊ฐ–๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ˆ์‹œ๋„ ํ™•์ธํ•˜์ž.

Top์„ ์ œ์™ธํ•œ ๋ถ€๋ถ„์„ Content์™€ Bottom์ด 1:2 ๋น„์œจ๋กœ ์ฑ„์šฐ๊ฒŒ ๋œ๋‹ค.

 

flex height ์ฐจ์ด์  , flex vs height ?

๊ทธ๋Ÿผ ์ด flex:1์ด height:100%, height:50%์™€ ๋ฌด์—‡์ด ๋‹ค๋ฅธ์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

height ์†์„ฑ์€ 300px๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์œ„์ฒ˜๋Ÿผ ๋ถ€๋ชจ์˜ ๋†’์ด ๊ธฐ์ค€ ๋น„์œจ(%)๋กœ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. flex:1์ด ๋ถ€๋ชจ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ชจ๋‘ ์ฑ„์›Œ 100%์™€ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ๋ณด๋“ฏ์ด ๋‹ค๋ฅด๋‹ค.

flex๋Š” ๋‹ค๋ฅธ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ชจ๋‘ ๊ณ ๋ คํ•˜์—ฌ ์ œ์™ธํ•˜๊ณ  ์ฑ„์›Œ์ฃผ์ง€๋งŒ, height ์†์„ฑ์€ ๋‚˜๋ณด๋‹ค ์•„๋ž˜์— ์žˆ๋Š” ์ž์‹๋“ค์€ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Bottom์ด ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ ์Šคํฌ๋กค ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด height:100%๊ฐ€ ๋งž๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•œ ํŽ˜์ด์ง€์— ๋ชจ๋‘ ๋ณด์—ฌ์ฃผ๊ณ ์‹ถ๋‹ค๋ฉด flex:1์„ ์‚ฌ์šฉํ•˜์ž.

 

 flexDirection ?

flex์˜ ๊ธฐ์ค€์„ ์„ธ๋กœcolum / ๊ฐ€๋กœrow ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ์†์„ฑ๋ช…์€ ๋ฐ”๋กœ flexDirection.

๊ธฐ๋ณธ ๋””ํดํŠธ ๊ฐ’์€ colum์œผ๋กœ ๋†’์ด๋กœ ์ง€์ •๋˜์–ด ์žˆ๋‹ค. ๊ฐ€๋กœ๋กœ ์ง€์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด flexDirection:'row'๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์ด๋ฅผ ์ด์šฉํ•ด์„œ ์›ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ์„ ์ง์ ‘ ์žก์•„๋ณด๊ธธ ๋ฐ”๋ž€๋‹ค.

์ถ”์ฒœํ•˜๋Š” ๋ฐ”๋Š”, Top๊ณผ Bottom ๋ถ€๋ถ„์€ ์ง์ ‘ ์›ํ•˜๋Š” px์„ height ์†์„ฑ์„ ์ž…๋ ฅํ•˜์—ฌ ๋„ฃ์–ด์ฃผ๊ณ , Contents ๋ถ€๋ถ„์„ ์„ธ๋ถ„ํ™” ํ•˜์—ฌ flex๋กœ ๊ตฌ๋ถ„ ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿผ ํ•œํŽ˜์ด์ง€์— ์Šคํฌ๋กค ์—†์ด ๊น”๋”ํ•œ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€