μμ΄μ΄νλ μ(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λ₯Ό μΈ μ μλ€.