Flexbox Layout
1. κ°μ
Flexbox Layoutμ λͺ¨λ μΉμ μνμ¬ μ μλ κΈ°μ‘΄ layoutλ³΄λ€ λ μΈλ ¨λ λ°©μμ λμ¦μ λΆν©νκΈ° μν CSS3μ μλ‘μ΄ layoutλ°©μμ΄λ€. νλμ€ λ°μ€ λ μ΄μμμ λΉκ΅μ μ΅κ·Όμ λ±μ₯ν κ°λ μ΄λ―λ‘ κΈ°μ‘΄μ CSS μμ± μΈμ μλ‘ κ³΅λΆν΄μΌ ν μμ±μ΄ μλ€.
2. μ©μ΄ μ 리

νλ μ€ μ»¨ν μ΄λ(λΆλͺ¨ λ°μ€): νλ μ€ λ°μ€ λ μ΄μμμ μ μ©ν λμμ λ¬Άλ μμμ΄λ€. μμ κ·Έλ¦Όμμλ λ ΈλΌμ λ°°κ²½μ κ°μ§ ν° λ°μ€κ° νλ μ€ μ»¨ν μ΄λμ ν΄λΉλλ€.
νλ μ€ νλͺ©(μμ λ°μ€, flex-item): νλ μ€ λ°μ€ λ μ΄μμμ μ μ©ν λμμ΄λ€. μμ κ·Έλ¦Όμμλ νμμ λ°°κ²½μ κ°μ§ μμ λ°μ€κ° νλ μ€ νλͺ©μ ν΄λΉλλ€.
μ£ΌμΆ(main axis): νλ μ€ μ»¨ν μ΄λ μμμ νλ μ€ νλͺ©μ λ°°μΉνλ κΈ°λ³Έ λ°©ν₯μ΄λ€. κΈ°λ³Έμ μΌλ‘ μΌμͺ½μμ μ€λ₯Έμͺ½μ΄λ©° μν λ°©ν₯μΌλ‘ λ°°μΉνλ€. νλ μ€ νλͺ©μ λ°°μΉκ° μμλλ μμΉλ₯Ό 'μ£ΌμΆ μμμ ', λλλ μμΉλ₯Ό 'μ£ΌμΆ λμ 'μ΄λΌκ³ νλ€.
κ΅μ°¨μΆ(cross axis): μ£ΌμΆκ³Ό κ΅μ°¨νλ λ°©ν₯μ λ§νλ©° κΈ°λ³Έμ μΌλ‘ μμμ μλλ‘ λ°°μΉνλ€. νλ μ€ νλͺ©μ λ°°μΉκ° μμλλ μμΉλ₯Ό 'κ΅μ°¨μΆ μμμ ', λλλ μμΉλ₯Ό 'κ΅μ°¨μΆ λμ 'μ΄λΌκ³ νλ€.
3. Usage
νλ μ€ λ°μ€ λ μ΄μμμ λ§λ€κΈ° μν΄μλ λ¨Όμ μΉ μ½ν μΈ λ₯Ό νλ μ€ μ»¨ν μ΄λλ‘ λ¬Άμ΄ μ£Όμ΄μΌ νλ€. μ¦, λ°°μΉν μΉ μμκ° μλ€λ©΄ κ·Έ μμλ₯Ό κ°μΈλ λΆλͺ¨ μμλ₯Ό λ§λ€κ³ , κ·Έ λΆλͺ¨ μμλ₯Ό νλ μ€ μ»¨ν μ΄λλ‘ λ§λ€μ΄μΌ νλ€.
λΆλͺ¨ μμμ display μμ±μ flexλ₯Ό μ§μ νλ©΄ νλ μ€ μ»¨ν μ΄λκ° λ§λ€μ΄μ§λ€.
λΆλͺ¨ μμκ° inline μμμΈ κ²½μ° inline-flexμ μ§μ νλ€.
Flexbox Layoutλ₯Ό μ¬μ©νκΈ° μν΄μλ flex λλ inline-flexλ λΆλͺ¨ μμμ λ°λμ μ§μ ν΄μΌνλ©° μμ μμλ μλμ μΌλ‘ flex itemμ΄ λλ€.
4. Flexbox container μμ±
4.1 flex-direction
νλ μ€ μ»¨ν μ΄λ μμμ νλ μ€ νλͺ©μ λ°°μΉνλ μ£ΌμΆ(main axis) λ°©ν₯μ μ€μ νλ€.
μλλ flex-directionμ νλ‘νΌν°κ°κ³Ό μ€λͺ
μ΄λ€.
row
μ£ΌμΆμ κ°λ‘λ‘ μ§μ νκ³ μΌμͺ½μμ μ€λ₯Έμͺ½μΌλ‘ λ°°μΉνλ€.(κΈ°λ³Έκ°)
row-reverse
μ£ΌμΆμ κ°λ‘λ‘ μ§μ νκ³ λ°λλ‘ μ€λ₯Έμͺ½μμ μΌμͺ½μΌλ‘ λ°°μΉνλ€.
column
μ£ΌμΆμ μΈλ‘λ‘ μ§μ νκ³ μμͺ½μμ μλμͺ½μΌλ‘ λ°°μΉνλ€.
column-reverse
μ£ΌμΆμ μΈλ‘λ‘ μ§μ νκ³ μλμͺ½μμ μμͺ½μΌλ‘ λ°°μΉνλ€.

4-2 flex-wrap
flex-wrap νλ‘νΌν°λ νλ μ€ μ»¨ν
μ΄λ λλΉλ³΄λ€ λ§μ νλ μ€ νλͺ©μ΄ μμ κ²½μ° μ€μ λ°κΏμ§ μ¬λΆλ₯Ό μ§μ νλ€.
μλλ flex-wrapμμ μ¬μ©ν μ μλ νλ‘νΌν°κ°κ³Ό μ€λͺ
μ΄λ€.
nowrap
νλ μ€ νλͺ©μ ν μ€μ νμνλ€.(κΈ°λ³Έκ°)
warp
νλ μ€ νλͺ©μ μ¬λ¬ μ€μ νμνλ€.
wrap-reverse
νλ μ€ νλͺ©μ μ¬λ¬ μ€μ νμνλ, μμμ κ³Ό λμ μ΄ λ°λλ€.

4-3. flex-flow
flex-flow νλ‘νΌν°λ flex-direction νλ‘νΌν°μ flex-wrap νλ‘νΌν°λ₯Ό λμμ μ€μ νκΈ° μν shorthandμ΄λ€. κΈ°λ³Έκ°μ row nowarpμ΄λ€.
μ¬μ©λ² flex-flow: <flex-direction> || <flex-wrap>;
4-4 justify-content
justify-content νλ‘νΌν°λ μ£ΌμΆ(main axis)μ κΈ°μ€μΌλ‘ flex itemμ μν μ λ ¬ λ°©λ²μ μ§μ νλ€.
flex-direction: column;μΌλ‘ μΈν΄ μ£ΌμΆμ΄ λ°λκ² λλ κ²½μ°λ₯Ό μ‘°μ¬νμ.
μλλ justify-contentμ νλ‘νΌν°κ°κ³Ό μ€λͺ
μ΄λ€.
flex-start
μ£ΌμΆμ μμμ μ λ§μΆ° λ°°μΉνλ€.
flex-end
μ£ΌμΆμ λμ μ λ§μΆ° λ°°μΉνλ€.
center
μ£ΌμΆμ μ€μμ λ§μΆ° λ°°μΉνλ€.
space-between
첫 λ²μ¬ νλͺ©κ³Ό λ νλͺ©μ μ£ΌμΆμ μμμ κ³Ό λμ μ λ°°μΉν ν λλ¨Έμ§ νλͺ©μ κ·Έ μ¬μ΄μ κ°μ κ°κ²©μΌλ‘ λ°°μΉνλ€.
space-around
λͺ¨λ νλͺ©μ μ£ΌμΆμ κ°μ κ°κ²©μΌλ‘ λ°°μΉνλ€.

4-5 align-items
align-items νλ‘νΌν°λ μμ§ λ°©ν₯(cross axis)μ κΈ°μ€μΌλ‘ flex itemμ μ λ ¬νλ€. align-items νλ‘νΌν°λ λͺ¨λ flex-itemμ μ μ©λλ€.
μλλ align-itemsμ νλ‘νΌν°κ°κ³Ό μ€λͺ
μ΄λ€.
flex-start
κ΅μ°¨μΆμ μμμ μ λ§μΆ° λ°°μΉνλ€.
flex-end
κ΅μ°¨μΆμ λμ μ λ§μΆ° λ°°μΉνλ€.
center
κ΅μ°¨μΆμ μ€μμ λ°°μΉνλ€.
baseline
κ΅μ°¨μΆμ λ¬Έμ κΈ°μ€μ μ λ§μΆ° λ°°μΉνλ€.
stretch
νλ μ€ νλͺ©μ λλ € κ΅μ°¨μΆμ κ°λ μ°¨κ² λ°°μΉνλ€.

4-6. align-content
flex containerμ cross axisλ₯Ό κΈ°μ€μΌλ‘ flex itemμ μμ§ μ λ ¬νλ€. μ°Έκ³ λ‘ justify-content νλ‘νΌν°λ flex containerμ main aixsλ₯Ό κΈ°μ€μΌλ‘ flex itemμ μν μ λ ¬νλ€.
μ¦, μ£ΌμΆμμ μ€ λ°κΏμ΄ μ겨μ flex itemμ μ¬λ¬ μ€λ‘ νμν λ align-content νλ‘νΌν°λ₯Ό ν΅ν΄ κ΅μ°¨μΆμμ flex itemμ κ°κ²©μ μ§μ ν μ μλ€.
μλλ align-contentμ νλ‘νΌν°κ°κ³Ό μ€λͺ
μ΄λ€.
flex-start
κ΅μ°¨μΆμ μμμ μμ λ§μΆ° λ°°μΉνλ€.
flex-end
κ΅μ°¨μΆμ λμ μ λ§μΆ° λ°°μΉνλ€.
center
κ΅μ°¨μΆμ μ€μμ λ§μΆ° λ°°μΉνλ€.
space-between
첫 λ²μ§Έ νλͺ©κ³Ό λ νλͺ©μ κ΅μ°¨μΆμ μμμ κ³Ό λμ μ λ§μΆκ³ λλ¨Έμ§ νλͺ©μ κ·Έ μ¬μ΄μ κ°μ κ°κ²©μΌλ‘ λ°°μΉνλ€.
space-around
λͺ¨λ νλͺ©μ κ΅μ°¨μΆμ κ°μ κ°κ²©μΌλ‘ λ°°μΉνλ€.
stretch
νλ μ€ νλͺ©μ λλ €μ κ΅μ°¨μΆμ κ°λ μ°¨κ² λ°°μΉνλ€.


5. Flexbox item μμ±
5-1. order
flex itemμ λ°°μΉ μμλ₯Ό μ§μ νλ€. HTML μ½λλ₯Ό λ³κ²½νμ§ μκ³ order νλ‘νΌν°κ°μ μ§μ νλ κ²μΌλ‘ κ°λ¨ν μ¬λ°°μΉν μ μλ€. κΈ°λ³Έ λ°°μΉ μμλ flex containerμ μΆκ°λ μμμ΄λ€. κΈ°λ³Έκ°μ 0μ΄λ€.
μ¬μ©λ² order: <μ μκ°>
5-2. flex-grow
flex itemμ λλΉμ λν νλ μΈμλ₯Ό μ§μ νλ€. κΈ°λ³Έκ°μ 0μ΄κ³ μμκ°μ 무ν¨νλ€.

5-3. flex-shrink
flex itemμ λλΉμ λν μΆμ μΈμλ₯Ό μ§μ νλ€. κΈ°λ³Έκ°μ 1μ΄κ³ μμκ°μ 무ν¨νλ€. 0λ₯Ό μ§μ νλ©΄ μΆμκ° ν΄μ λμ΄ μλμ λλΉλ₯Ό μ μ§νλ€.

5-4. flex-basis
flex itemμ λλΉ κΈ°λ³Έκ°μ px, % λ±μ λ¨μλ‘ μ§μ νλ€. κΈ°λ³Έκ°μ autoμ΄λ€.

5-5. flex
flex-grow, flex-shrink, flex-basis νλ‘νΌν°μ shorthandμ΄λ€. κΈ°λ³Έκ°μ 0 1 autoμ΄λ€.
W3Cμμλ μ΄ νλ‘νΌν°λ₯Ό μ¬μ©νλ κ² λ³΄λ€ κ°λ³μ μΌλ‘ κΈ°μ νλ κ²μ μΆμ²νκ³ μλ€.
5-6. align-self
align-item μμ±μ κ΅μ°¨μΆμ κΈ°μ€μΌλ‘ νλ μ€ νλͺ©μ μ λ ¬ λ°©λ²μ κ²°μ νμ§λ§ κ·Έμ€μμ νΉμ νλͺ©λ§ μ§μ νκ³ μΆλ€λ©΄ align-self μμ±μ μ¬μ©νλ€. align-item νλ‘νΌν°λ³΄λ€ μ°μ νμ¬ κ°λ³ flex itemμ μ λ ¬νλ€.
align-self νλ‘νΌν°μμ μ¬μ©ν κ°μ align-items νλ‘νΌν°μμ μ¬μ©νλ κ°κ³Ό κ°λ€.

6. Conclusion
flex-growλ μ²μ μ¨λ³΄λ νλ‘νΌν°μ΄λ€. κ΅μ₯ν μ κΈ°νλ€. μμ μ½λλ₯Ό μλ₯Όλ€μ΄ box ν΄λμ€λ₯Ό κ°μ§ divλ€μ λλΉλ₯Ό 100%λ‘ μ§μ νμ§ μμλflex-growλ₯Ό 1λ‘ μ§μ νλ©΄ μ 체 λλΉλ₯Ό λͺ¨λ λλ±νκ² μ°¨μ§νκ² λλ€. κΈ°λ³Έκ°μ 0 μ΄λ―λ‘ λ± μμ μ μμλ§νΌλ§ λλΉλ₯Ό μ°¨μ§νλ κ² κ°λ€. λΏλ§ μλλΌflex-shrinkκ³Όflex-basisλ μ΄λ² 곡λΆλ₯Ό νλ©΄μ μ²μ μ¨λ³΄λ νλ‘νΌν°μλ€.flexλgridλ₯Ό λ°°μ°κΈ° μ κΉμ§ μμ£Ό μ¬μ©νμλ€. νμ§λ§gridλ₯Ό λ°°μ°κ³ λμλ μ¬μ©λΉλκ° λ§μ΄ μ€μλ€. λ κ°μ νλ‘νΌν° λͺ¨λ CSSμμ μ€μν λ΄μ©μ΄λ νμν μν©μ λ§μΆ° μ μ¬μ©νλλ‘ νμ.
μ°Έκ³
poiemaweb 2-20 νλ μ€ λ°μ€ λ μ΄μμ λμ - HTML + CSS + μλ°μ€ν¬λ¦½νΈ μΉ νμ€μ μ μ
π 2022-07-24
Last updated