🌈 [Section1] 4. νŽ˜μ΄μ§€ λ ˆμ΄μ•„μ›ƒ / μ›Ή μ•± ν™”λ©΄ μ„€κ³„ν•˜κΈ°

ν˜„μ£ΌΒ·2022λ…„ 8μ›” 24일
0

bootcamp

λͺ©λ‘ 보기
4/71

πŸ“• 였늘 배운 λ‚΄μš©!

  • Flexbox
  • 와이어 ν”„λ ˆμž„

✏️ Flexbox의 μ—­ν• 

  • μš”μ†Œλ“€μ„ μžλ™μœΌλ‘œ μ •λ ¬ν•΄μ£Όκ³  λ°•μŠ€λ₯Ό μœ μ—°ν•˜κ²Œ λŠ˜λ¦¬κ±°λ‚˜ 쀄여 λ ˆμ΄μ•„μ›ƒμ„ μž‘μ„ 수 있음!
  • display : flex

πŸ’‘ μ€‘μš”ν•œ 점!
1. flexboxλŠ” 항상 λΆ€λͺ¨μ—κ²Œ 말을 κ±Έμ–΄ μžμ‹ μš”μ†Œλ“€μ„ μ‘°μ’…ν•œλ‹€
2. Main Axis와 Cross AxisλŠ” 항상 κ³ μ •μ μ΄μ§€λŠ” μ•Šλ‹€

βœ”μˆ˜μ§λΆ„ν• 

  • μ½˜ν…μΈ λ₯Ό κ°€λ‘œλ‘œ 배치

βœ”μˆ˜ν‰λΆ„ν• 

  • μ½˜ν…μΈ λ₯Ό μ„Έλ‘œλ‘œ 배치

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

  • μžμ‹ μš”μ†Œλ“€μ„ μ •λ ¬ν•  μ •λ ¬ 좕을 정함

1. flex-direction : μ •λ ¬ μΆ• μ •ν•˜κΈ°

  • row κ°€λ‘œ μ •λ ¬ ( 쒌 -> 우 ) (κΈ°λ³Έκ°’)
    column μ„Έλ‘œ μ •λ ¬ ( 상 -> ν•˜ )
    row-reverse λ°˜λŒ€λ‘œ κ°€λ‘œ μ •λ ¬ ( 우 -> 쒌 )
    column-reverse λ°˜λŒ€λ‘œ μ„Έλ‘œ μ •λ ¬ ( ν•˜ -> 상)
    βœ”οΈ column-reverse / row-reverse μ‚¬μš©μ‹œ μš”μ†Œλ“€μ˜ start(쒌)와 end(우)의 μˆœμ„œ λ’€λ°”λ€œ

2. flex-wrap : 쀄 λ°”κΏˆ μ„€μ •ν•˜κΈ°

  • nowrap κΈ°λ³Έκ°’
    wrap λ°•μŠ€μ— λ§žλŠ” λŒ€λ‘œ μ€„λ°”κΏˆ
    wrap-reverse λ°˜λŒ€λ‘œ μ€„λ°”κΏˆ (λ°‘μ—μ„œλΆ€ν„°)
    βœ”οΈ μš”μ†Œλ“€μ˜ 크기가 μ»¨ν…Œμ΄λ„ˆλ³΄λ‹€ 클 λ•Œ μ€„λ°”κΏˆμ„ μ„€μ •ν•΄ 주지 μ•ŠμœΌλ©΄ μ»¨ν…Œμ΄λ„ˆ λ°–μœΌλ‘œ λΉ μ Έλ‚˜κ°ˆ 수 있음

3. justify-content : μΆ• μˆ˜ν‰ λ°©ν–₯ μ •λ ¬

1) flex-direction : row 인 경우 (정렬좕이 수직방ν–₯인 경우)

  • flex-start μ™Όμͺ½μœΌλ‘œ κ°€λ‘œ μ •λ ¬
    flex-end 였λ₯Έμͺ½μœΌλ‘œ κ°€λ‘œ μ •λ ¬
    center μ†Œλ“€μ„ μ»¨ν…Œμ΄λ„ˆμ˜ μ„Έλ‘œμ„  μƒμ˜ μœ„μͺ½μœΌλ‘œ κ°€μš΄λ°λ‘œ κ°€λ‘œ μ •λ ¬
    space-between μš”μ†Œλ“€ 사이에 λ™μΌν•œ 간격을 두고 κ°€λ‘œ μ •λ ¬
    space-around μš”μ†Œλ“€ μ–‘μͺ½μ— λ™μΌν•œ 간격을 두고 κ°€λ‘œ μ •λ ¬
    β €

2) flex-direction : column 인 경우 (정렬좕이 μˆ˜ν‰λ°©ν–₯인 경우)

  • flex-start μœ„μͺ½μœΌλ‘œ μ„Έλ‘œ μ •λ ¬ (쒌 -> 상 / 우 -> ν•˜ 둜 λ°”λ€œ)
    flex-end μ•„λž˜μͺ½μœΌλ‘œ μ„Έλ‘œ μ •λ ¬
    center μš”μ†Œλ“€μ„ μ»¨ν…Œμ΄λ„ˆμ˜ κ°€λ‘œμ„  μƒμ˜ μœ„μͺ½μœΌλ‘œ κ°€μš΄λ°λ‘œ μ •λ ¬
    pace-between μš”μ†Œλ“€ 사이에 λ™μΌν•œ 간격을 두고 κ°€λ‘œ μ •λ ¬
    space-around μš”μ†Œλ“€ μ–‘μͺ½μ— λ™μΌν•œ 간격을 두고 κ°€λ‘œ μ •λ ¬

3. align-items : μΆ• 수직 λ°©ν–₯ μ •λ ¬ (μ •λ ¬μΆ•μ˜ λ°˜λŒ€ μ •λ ¬)

1) flex-direction : row 인 경우 (정렬좕이 수직방ν–₯인 경우)

  • stretch μš”μ†Œλ“€μ„ μ»¨ν…Œμ΄λ„ˆμ— λ§žλ„λ‘ 늘림
    flex-start μš”μ†Œλ“€μ„ μ»¨ν…Œμ΄λ„ˆμ˜ μœ„μͺ½μœΌλ‘œ κ°€λ‘œ μ •λ ¬
    flex-end μš”μ†Œλ“€μ„ μ»¨ν…Œμ΄λ„ˆμ˜ λ°”λ‹₯으둜 κ°€λ‘œ μ •λ ¬
    center μš”μ†Œλ“€μ„ μ»¨ν…Œμ΄λ„ˆμ˜ μ„Έλ‘œμ„  μƒμ˜ κ°€μš΄λ°λ‘œ κ°€λ‘œ μ •λ ¬
    baseline μš”μ†Œλ“€μ„ μ»¨ν…Œμ΄λ„ˆμ˜ μ‹œμž‘ μœ„μΉ˜μ— κ°€λ‘œ μ •λ ¬
    β €

2) flex-direction : column 인 경우 (정렬좕이 μˆ˜ν‰λ°©ν–₯인 경우)

  • stretch μš”μ†Œλ“€μ„ μ»¨ν…Œμ΄λ„ˆμ— λ§žλ„λ‘ 늘림
    flex-start μš”μ†Œλ“€μ„ μ»¨ν…Œμ΄λ„ˆμ˜ μœ„μͺ½μœΌλ‘œ μ„Έλ‘œ μ •λ ¬
    flex-end μš”μ†Œλ“€μ„ μ»¨ν…Œμ΄λ„ˆμ˜ λ°”λ‹₯으둜 μ„Έλ‘œ μ •λ ¬
    centr μš”μ†Œλ“€μ„ μ»¨ν…Œμ΄λ„ˆμ˜ κ°€λ‘œμ„  μƒμ˜ κ°€μš΄λ°λ‘œ μ„Έλ‘œ μ •λ ¬
    baseline μš”μ†Œλ“€μ„ μ»¨ν…Œμ΄λ„ˆμ˜ μ‹œμž‘ μœ„μΉ˜μ— μ„Έλ‘œ μ •λ ¬

✏️ μžμ‹ μš”μ†Œμ— μ μš©ν•΄μ•Όν•˜λŠ” Flex 속성

  • μš”μ†Œκ°€ μ°¨μ§€ν•˜λŠ” 곡간과 κ΄€λ ¨

flex μ†μ„±μ˜ κ°’

  1. grow (팽창 μ§€μˆ˜)
    μ •λ ¬μΆ• λ°©ν–₯으둜 빈 곡간이 μžˆμ„ λ•Œ, μžμ‹ μš”μ†Œμ˜ 크기가 각각 μ–Όλ§ˆλ‚˜ λŠ˜μ–΄λ‚˜μ„œ λ‚¨λŠ” 곡간을 차지할 것인지 λΉ„μœ¨ μ •ν•˜λŠ” 것 (λΉ„μœ¨μ΄ 클수둝 많이 차지)
  1. shrink (μˆ˜μΆ• μ§€μˆ˜)
    μš”μ†Œμ˜ 크기가 쀄어듀어야 ν•  λ•Œ μ–Όλ§ˆλ‚˜ 쀄어듀 것인지
    (μ‹€μ œ 크기λ₯Ό μ˜ˆμΈ‘ν•˜κΈ°κ°€ μ–΄λ €μ›Œ flex-shrink 속성은 기본값인 1둜 두어도 무방)
    (flex-shrinkλ₯Ό 0으둜 μ„ΈνŒ…ν•˜λ©΄ μ•„μ΄ν…œμ˜ 크기가 flex-basis보닀 μž‘μ•„μ§€μ§€ μ•ŠμŒ)
  1. basis(기본 크기)
    flex-grow λ‚˜ flex-shrink 에 μ˜ν•΄ λŠ˜μ–΄λ‚˜κ±°λ‚˜ 쀄어듀기 전에 κ°€μ§€λŠ” μš”μ†Œλ“€μ˜ κΈ°λ³Έ 크기

- μžμ‹ μš”μ†Œμ— flex 속성을 λ”°λ‘œ 섀정해주지 μ•ŠμœΌλ©΄?

  • grow shrink basis μˆœμ„œλ‘œ κΈ°λ³Έ 값이 0 1 auto κ°€ 됨

flex-grow: 0; //β€˜λΉˆκ³΅κ°„μ΄ μžˆμ–΄λ„ λŠ˜μ–΄λ‚˜μ§€ μ•ŠμŒβ€˜ 의미
flex-shrink: 1;
flex-basis: auto; μ΄λ ‡κ²Œ λ”°λ‘œ 섀정도 κ°€λŠ₯ν•˜κ³  λ‚˜λ¨Έμ§€ λ°•μŠ€2, λ°•μŠ€3λŠ” 1:1 λΉ„μœ¨λ‘œ λ‚˜λ¨Έμ§€ 곡간 차지

Ex. λ°•μŠ€1 λ°•μŠ€2 λ°•μŠ€3이 μžˆμ„ λ•Œ 각각의 flex-growλ₯Ό 0:1:1둜 μ„€μ •ν•˜κ³  basis 크기λ₯Ό flex-basis : 50px 이런 μ‹μœΌλ‘œ μ§€μ •ν•˜λ©΄ 겉 ν…Œλ‘λ¦¬μ˜ mainboxλ₯Ό λŠ˜λ Έμ„ λ•Œ growκ°€ 0인 λ°•μŠ€1의 ν¬κΈ°λŠ” λŠ˜κ±°λ‚˜ 쀄지 μ•Šμ•„ 50px을 μœ μ§€


πŸ’¬ κ°•μ˜μ—μ„œμ˜ Q )

μ„Έ 개의 λ°•μŠ€ λͺ¨λ‘ flex-grow : 1 일 λ•Œ, 1번 μ˜ˆμ‹œλŠ” flex-basis : auto, 2번 μ˜ˆμ‹œλŠ” flex-basis : 0 으둜 μ„€μ •ν•΄μ£Όμ—ˆμŠ΅λ‹ˆλ‹€. 두 μ˜ˆμ‹œ 쀑 μ‹€μ œλ‘œ 1 : 1 : 1 의 λ„ˆλΉ„λ₯Ό κ°–λŠ” 것은 μ–΄λŠ μ˜ˆμ‹œμΈκ°€μš”? μ™œ 이런 차이가 λ°œμƒν• κΉŒμš”?

πŸ’¬ λ‚˜μ˜ Answer )

[ 속성값이 0인 경우 ]
κΈ°λ³ΈμΆ•μ—μ„œ flex-grow, flex-shrink μ„€μ • λΉ„μœ¨λŒ€λ‘œ μ•„μ΄ν…œ λ„ˆλΉ„ λ°°λΆ„ν•˜κΈ° λ•Œλ¬Έμ— λ„ˆλΉ„ κ·ΈλŒ€λ‘œ κ΅¬ν˜„ κ°€λŠ₯
-> μ‹€μ œ λ„ˆλΉ„κ°€ 1:1:1

[ 속성값이 auto인 경우 ]
κΈ°λ³ΈμΆ•μ—μ„œ μ•„μ΄ν…œ 차지 곡간 μ œμ™Έν•œ 여백을 μ•„μ΄ν…œμ— μžλ™μœΌλ‘œ 골고루 λ°°λΆ„. (μ•„μ΄ν…œμ˜ height 값이 μ—†λŠ” 경우, κ·Έ μ•ˆμ˜ λ‚΄μš© 길이에 μ˜ν•΄ κ²°μ •.)
-> μ‹€μ œ λ„ˆλΉ„κ°€ 1:1:1κ³Ό λ‹€λ₯Ό 수 있음


✏️ 와이어 ν”„λ ˆμž„

  • UX와 상관 없이 λ ˆμ΄μ•„μ›ƒκ³Ό μ œν’ˆμ˜ ꡬ쑰λ₯Ό λ³΄μ—¬μ£ΌλŠ” 것

✏️ HTML둜 μ›Ή μ•± ꡬ쑰 작기

  • μ™„μ„±λ˜μ–΄μžˆλŠ” νŽ˜μ΄μ§€λ₯Ό 보고 단락 단락 λ§ˆλ‹€ <div>둜 λ‚˜λˆ„μ–΄ μ£Όκ³  κ·Έ μ•ˆμ— <input>μ΄λ‚˜ <button> λ“±μ˜ νƒœκ·Έλ₯Ό λ„£κΈ°

😜 와이어 ν”„λ ˆμž„ μ‹€μŠ΅ !

λ‚˜λŠ” μ €λ²ˆμ— μ•„μ›ƒλ°±μ—μ„œ 점심을 λ¨Ήμ—ˆλ˜ 게 μƒκ°λ‚˜μ„œ 카카였의 였븐(oven)을 μ΄μš©ν•˜μ—¬ 아웃백 ν™ˆνŽ˜μ΄μ§€λ₯Ό ν•œλ²ˆ 와이어 ν”„λ ˆμž„μœΌλ‘œ κ΅¬ν˜„ν•΄λ³΄μ•˜λ‹€ ↓↓↓↓↓↓


🌈 λŠλ‚€μ 

이번 ν•™μŠ΅μ—μ„œλŠ” 사싀 flexbox 속성이 μ΄ν•΄ν•˜κΈ° μ–΄λ €μ›Œμ„œ μ—¬λŸ¬λ²ˆ λ΄€λŠ”λ°λ„ 이해가 잘 μ•ˆλλ‹€
근데 개ꡬ리 κ²Œμž„μ„ λ‘λ²ˆμ •λ„ ν•˜λ‹€λ³΄λ‹ˆκΉŒ μ§€κΈˆμ€ μ™„μ „ 이해됐닀!! μ—­μ‹œ λ‚œ 일단 해봐야 ν•΄!
ν•˜μ§€λ§Œ λ¬Έμ œλŠ” 개ꡬ리 κ²Œμž„μ— μ§‘μ€‘ν•˜λŠλΌ μ™Έμ› λ˜ flex 속성듀을 λ‹€ μžŠμ—ˆλ‹€,, λ‹€μ‹œ 또 봐야겠닀 μ—‰μ—‰ γ… 
와이어 ν”„λ ˆμž„ μ‹€μŠ΅μ€ 사싀 ν•œλ²ˆλ„ ν•΄λ³Έ 적이 없기에 ν•˜λ©΄μ„œλ„ 'μ΄λ ‡κ²Œ ν•˜λŠ” 게 λ§žλ‚˜?' μ‹Άμ—ˆμ§€λ§Œ κ·Έλž˜λ„ 잘 ν•΄λ‚Έ 것 κ°™λ‹€! ν™ˆνŽ˜μ΄μ§€μ™€ μ΅œλŒ€ν•œ λΉ„μŠ·ν•˜κ²Œ κ΅¬ν˜„ν•˜λ €κ³  ν•˜λ‹€κ°€ μ‹œκ°„μ΄ 거의 3μ‹œκ°„ λ°˜μ •λ„ κ±Έλ ΈλŠ”λ° κ·Έλž˜λ„ λΏŒλ“―ν•˜λ‹€ γ…Žγ…Ž

0개의 λŒ“κΈ€