πŸ“ŒLanguage/HTML & CSS

TIL) CSS λ ˆμ΄μ•„μ›ƒ, Flexbox, flex : 1?

hellohailie 2022. 5. 3. 23:57

μ™€μ΄μ–΄ν”„λ ˆμž„(Wireframe)μ΄λž€?

μ›Ή λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  λ•Œ λ ˆμ΄μ•„μ›ƒμ˜ λΌˆλŒ€λ₯Ό κ·Έλ¦¬λŠ” 단계이닀. 

μ•„μ£Ό λ‹¨μˆœν•˜κ²Œ, λ ˆμ΄μ•„μ›ƒκ³Ό μ œν’ˆμ˜ ꡬ쑰λ₯Ό λ³΄μ—¬μ£ΌλŠ” μš©λ„μ΄κ³ , μ „ν™˜ νš¨κ³Όλ‚˜, μ• λ‹ˆλ©”μ΄μ…˜, μ‚¬μš©μž ν…ŒμŠ€νŠΈ 같은 μŠ€νƒ€μΌλ§ μš”μ†Œλ‚˜ UX(μ‚¬μš©μž κ²½ν—˜, User Experience)λ₯Ό νŒλ‹¨ν•˜λŠ” 것이 μ•„λ‹ˆλ‹€.

 

λͺ©μ—…(Mock-up)μ΄λž€?

μ›Ή λ˜λŠ” 앱을 μ œν’ˆμ΄λΌκ³  ν•  λ•Œ, λͺ©μ—…은 μ‹€μ œ μ œν’ˆμ΄ μž‘λ™ν•˜λŠ” λͺ¨μŠ΅κ³Ό λ™μΌν•˜κ²Œ HTML λ¬Έμ„œλ₯Ό μž‘μ„±ν•˜λŠ” 것.

 

 

=> μ™€μ΄μ–΄ν”„λ ˆμž„κ³Ό λͺ©μ—… μž‘μ—…μ€ js둜 λ„˜μ–΄κ°€κΈ° μ „, 섀계도와 κ°™λ‹€.

 

 


ν‚€ν¬μΈνŠΈ

  • display: flex; λ₯Ό μžμ‹ μš”μ†Œκ°€ μ•„λ‹Œ λΆ€λͺ¨ μš”μ†Œμ— μ μš©ν•΄μ•Όν•œλ‹€.
  • flex-direction 을 μ΄μš©ν•˜μ—¬ μš”μ†Œλ₯Ό μ •λ ¬ν•  λ°©ν–₯을 κ²°μ •ν•  수 μžˆλ‹€.
  • justify-content 와 align-items λ₯Ό μ΄μš©ν•˜μ—¬ μˆ˜ν‰-수직 정렬을 κ²°μ •ν•  수 μžˆλ‹€.
  • flex-grow λ₯Ό μ΄μš©ν•˜μ—¬ μš”μ†Œλ₯Ό μ–Όλ§ˆλ‚˜ 늘릴 것인지 κ²°μ •ν•  수 μžˆλ‹€.
  • flex-basis λ₯Ό μ΄μš©ν•˜μ—¬ μš”μ†Œμ˜ κΈ°λ³Έ 크기λ₯Ό κ²°μ •ν•  수 μžˆλ‹€.

 

 

Flexbox 속성듀을 ν™œμš©ν•˜λ©΄ μš”μ†Œμ˜ μ •λ ¬, μš”μ†Œκ°€ μ°¨μ§€ν•˜λŠ” 곡간을 섀정해쀄 수 μžˆλ‹€. 

 

display: flex;둜 μ§€μ •λœ Flex ContainerλŠ” Block μš”μ†Œμ™€ 같은 μ„±ν–₯(수직 μŒ“μž„)을 가지며,
display: inline-flex;둜 μ§€μ •λœ Flex ContainerλŠ” Inline(Inline Block) μš”μ†Œμ™€ 같은 μ„±ν–₯(μˆ˜ν‰ μŒ“μž„)

 


 

1. λΆ€λͺ¨ μš”μ†Œμ— μ μš©ν•΄μ•Όν•˜λŠ” Flexbox 속성

 

1) flex-direction : μžμ‹ μš”μ†Œ μ •λ ¬ μΆ• μ •ν•˜κΈ° / row(defalt), row-reverse, column, column-reverse

2) flex-wrap : ν•˜μœ„ μš”μ†Œλ“€μ˜ 크기가 μƒμœ„ μš”μ†Œμ˜ 크기λ₯Ό λ„˜μœΌλ©΄ μžλ™ 쀄 λ°”κΏˆμ„ ν•  것인지 μ„€μ •ν•˜κΈ° / nowrap(defalt), wrap, wrap-reverse

3) justify-content : μžμ‹ μš”μ†Œλ“€μ„ μΆ•μ˜ μˆ˜ν‰ λ°©ν–₯으둜 μ–΄λ–»κ²Œ μ •λ ¬ν•  것인지(flex-direction에 따라 닀름) / flex-start, flex-end, center, space-between, space-around

4) align-items : μžμ‹ μš”μ†Œλ“€μ„ μΆ•μ˜ 수직 λ°©ν–₯으둜 μ–΄λ–»κ²Œ μ •λ ¬ν•  것인지 (μΆ• 수직 λ°©ν–₯ μ •λ ¬) / flex-start, flex-end, center, baseline, stretch

 

 

2. μžμ‹ μš”μ†Œμ— μ μš©ν•΄μ•Ό ν•˜λŠ” Flexbox 속성

flex!

 

πŸ‘‡κΈ°λ³Έκ°’ πŸ‘‡

flex: 0 1 auto;

 

μˆœμ„œλŒ€λ‘œ grow -  shrink - basis

 

1. grow : μ •λ ¬μΆ• λ°©ν–₯으둜 빈 곡간이 μžˆμ„ λ•Œ, 각 μžμ‹ μš”μ†Œλ“€μ΄ μ–Όλ§ˆλ‚˜ λŠ˜μ–΄λ‚˜μ„œ λ‚¨λŠ” 곡간을 차지할 것인지 λΉ„μœ¨μ„ μ •ν•˜λŠ” 것

=> μžμ‹ μš”μ†Œμ˜ growκ°’ / μžμ‹ μš”μ†Œλ“€μ˜ growκ°’μ˜ μ΄ν•©μ˜ λΉ„μœ¨λ‘œ 빈 곡간을 κ°€μ Έκ°„λ‹€. 

 

2. shrink : μ„€μ •ν•œ λΉ„μœ¨λ§ŒνΌ λ°•μŠ€ 크기가 μž‘μ•„μ§„λ‹€. 

 

3. basis : μžμ‹ λ°•μŠ€κ°€ flex-grow λ‚˜ flex-shrink 에 μ˜ν•΄ λŠ˜μ–΄λ‚˜κ±°λ‚˜ 쀄어듀기 μ „(곡간 λ°°λΆ„ μ „)에 κ°€μ§€λŠ” κΈ°λ³Έ 크기이닀. 

(flex-grow κ°€ 0일 λ•Œ, basis 크기λ₯Ό μ§€μ •ν•˜λ©΄ κ·Έ ν¬κΈ°λŠ” μœ μ§€λœλ‹€.)

 

 


μ°Έκ³ 

 

flex : 1; 만 μ μš©ν•œλ‹€λ©΄, μ•„λž˜μ²˜λŸΌ πŸ‘‡ μ μš©ν•œκ±°λ‹€. 

  • flex-grow: 1
  • flex-shrink: 1
  • flex-basis: 0 (would be the same as specifying "width: 0"/ κ°€λŠ₯ν•œ κ°€μž₯ μž‘μ€ λ„ˆλΉ„λ‘œ μΆ•μ†Œ)

=> the flex base size will be 0 in the first case, so the flex items will have the same size after distributing free space.

 

 

flex-grow: 1; 을 μ μš©ν•œλ‹€λ©΄ μ•„λž˜μ²˜λŸΌ πŸ‘‡ μ μš©ν•œκ±°λ‹€. 

  • flex-grow: 1
  • flex-shrink: 1
  • flex-basis: auto

=> each flex item will start with the size given by its content, and then will grow or shrink according to free space. Most probably the sizes will end up being different.

 

 

μ°Έκ³ 

  • width와 flex-basisλ₯Ό λ™μ‹œμ— μ μš©ν•˜λŠ” 경우, flex-basisκ°€ μš°μ„ .
  • μ½˜ν…μΈ κ°€ λ§Žμ•„ μžμ‹ λ°•μŠ€κ°€ λ„˜μΉ˜λŠ” 경우, widthκ°€ μ •ν™•ν•œ 크기λ₯Ό 보μž₯X.
  • (flex-basisλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄) μ½˜ν…μΈ κ°€ λ§Žμ•„ μžμ‹ λ°•μŠ€κ°€ λ„˜μΉ˜λŠ” 경우λ₯Ό λŒ€λΉ„ν•΄, width λŒ€μ‹  max-widthλ₯Ό μ“Έ 수 μžˆλ‹€.