κ°κ°μ μμλ₯Ό λͺ©μ μ λ§κ² λ°°μΉνλ κ²μ΄λ€.
λ μ΄μμμ λΌλλ₯Ό 그리λ λ¨κ³λ‘, λ¨μν μ μ΄λ λνμΌλ‘ μΉ,μ±μ μΈν°νμ΄μ€λ₯Ό λ¬μ¬ν κ²μ΄λ€.
λ¨μν λ μ΄μμκ³Ό μ νμ ꡬ쑰λ₯Ό 보μ¬μ£Όλ μ©λλ‘, μ€νμΌλ§ μμλ UXλ₯Ό νλ¨νμ§ μλλ€.
μ€λ¬Ό ν¬κΈ°μ λͺ¨νμ λ»νλ©° μΉ, μ±μ κ²½μ° μ€μ λ‘ μλνλ λͺ¨μ΅κ³Ό λμΌν HTML λ¬Έμλ₯Ό μμ±νλ€. μ΄λ, νλμ½λ©μΌλ‘ μμ±νλ€.
μ½λ λ΄λΆμ λ°μ΄ν°λ₯Ό μ§μ μ λ ₯νλ κ²μΌλ‘, κ°μ κ³ μ μμΌ λλ κ²μ΄λ€.
ex) ꡬꡬλ¨μ λ§λ λ€κ³ κ°μ νμ λ, ꡬꡬλ¨μ²λΌ 보μ΄κ² νκΈ°μν΄ κ° μ«μμ λ¨μ λͺ¨λ μΆλ ₯
console.log('2 x 1 = 2')
console.log('2 x 2 = 4')
console.log('2 x 3 = 6')
console.log('2 x 4 = 8')
μμ§λΆν : νλ©΄μ μμ§μΌλ‘ λΆν νμ¬ μ½ν μΈ κ° κ°λ‘λ‘ λ°°μΉλ μ μλλ‘ νλ€.
μνλΆν : μμ§μΌλ‘ λΆν λ κ°κ°μ μμλ₯Ό μνμΌλ‘ λΆν νμ¬, λ΄λΆ μ½ν μΈ κ° μΈλ‘λ‘ λ°°μΉλ μ μλλ‘ νλ€.
<!--μμ λ μ΄μμμ κ³ λ €μ μμ±λ HTML-->
<div id="container">
<div class="col w10">
<div class="icon">μμ΄μ½ 1</div>
<div class="icon">μμ΄μ½ 2</div>
<div class="icon">μμ΄μ½ 3</div>
</div>
<div class="col w20">
<div class="row h40">μμ1</div>
<div class="row h40">μμ2</div>
<div class="row h20">μμ3</div>
</div>
<div class="col w70">
<div class="row h80">μμ4</div>
<div class="row h20">μμ5</div>
</div>
</div>
/* Class μ΄λ¦μ λ§λ CSS ꡬν */
.w70 { width: 70%; }
.h40 { height: 40%; }
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
}
Flexible boxλΌλ λ»μΌλ‘, λ°μ€λ₯Ό μ μ°νκ² λ리거λ μ€μ΄λ©΄μ λ μ΄μμμ μ‘λ λ°©λ²μ΄λ€.
λΆλͺ¨ λ°μ€ μμμ μ μ©ν΄, μμ λ°μ€μ λ°©ν₯κ³Ό ν¬κΈ°λ₯Ό κ²°μ νλ€.
μμͺ½μμ λΆν° μΈλ‘λ‘ μ λ ¬, κ°λ‘λ‘ λκ² κ³΅κ° μ°¨μ§(default) -> μΌμͺ½λΆν° κ°λ‘λ‘ μ λ ¬, μ½ν μΈ λ§νΌμ κ³΅κ° μ°¨μ§
μμμμλ€μ μ λ ¬ν μΆμ κ²°μ νλ€. μ무 μ€μ λ μ νλ©΄ default κ°λ‘ μ λ ¬.
row
(default) : μΌμͺ½μμλΆν° κ°λ‘ μ λ ¬column
: μμμλΆν° μΈλ‘ μ λ ¬row-reverse
: μ€λ₯Έμͺ½μμλΆν° κ°λ‘ μ λ ¬column-reverse
: λ°μμλΆν° μΈλ‘ μ λ ¬μμ μμλ€μ ν¬κΈ° > λΆλͺ¨ μμμ ν¬κΈ° μΌλ, μλ μ€ λ°κΏμ ν κ²μΈμ§ κ²°μ νλ€. μ무 μ€μ λ μ νλ©΄ default μ€ λ°κΏ X.
nowrap
(default) : μ€λ°κΏ xwrap
: μμμλΆν° κ°λ‘ μ λ ¬, μ€λ°κΏ Owrap-reverse
: λ°μμλΆν° κ°λ‘ μ λ ¬, μ€λ°κΏ Oμμ μμλ€μ μΆμ μνλ°©ν₯μΌλ‘ μ΄λ»κ² μ λ ¬ν κ²μΈμ§ κ²°μ νλ€.
flex-direction : row
λΌλ©΄,
flex-start
: μΌμͺ½ μμμλΆν° μ λ ¬flex-end
: μ€λ₯Έμͺ½ μμμλΆν° μ λ ¬center
: κ°μ΄λ° μμμλΆν° μ λ ¬space-between
: μ’μ° μλμ λ§μΆ° κ³΅κ° λΉμ°κ³ μΌμͺ½μμλΆν° μ λ ¬space-around
: μ’μ° μ£Όλ³(μλx)μ λ§μΆ° λΉμ°κ³ μΌμͺ½μμλΆν° μ λ ¬flex-direction
: column` λΌλ©΄,
flex-start
: μΌμͺ½ μμμλΆν° μ λ ¬flex-end
: μΌμͺ½ λ°μμλΆν° μ λ ¬center
: μΌμͺ½ κ°μ΄λ°μμλΆν° μ λ ¬space-between
: μν μλμ λ§μΆ° κ³΅κ° λΉμ°κ³ μΌμͺ½μμλΆν° μ λ ¬space-around
: μν μ£Όλ³(μλx)μ λ§μΆ° λΉμ°κ³ μΌμͺ½μμλΆν° μ λ ¬μμ μμλ€μ μΆμ μμ§λ°©ν₯μΌλ‘ μ΄λ»κ² μ λ ¬ν κ²μΈμ§ κ²°μ νλ€.
stretch
, lex-start
, flex-end
, center
, baseline
flex-direction : row
λΌλ©΄,
flex-direction : column
λΌλ©΄,
λΆλͺ¨ μμμ μ μ©ν΄μΌ νλ μμ±: μμμμλ€μ μ λ ¬ κ²°μ
μμ μμμ μ μ©ν΄μΌ νλ μμ±: μμκ° μ°¨μ§νλ κ³΅κ° κ²°μ
flex-grow:
: ν½μ°½ μ§μ, μμμ ν¬κΈ°κ° λμ΄λμΌ ν λ, μΌλ§λ λμ΄λ κ²μΈμ§ κ²°μ flex-shrink:
: μμΆ μ§μ, μμμ ν¬κΈ°κ° μ€μ΄λ€μ΄μΌ ν λ, μΌλ§λ μ€μ΄λ€ κ²μΈμ§ κ²°μ flex-basis:
: μμμ κΈ°λ³Έ ν¬κΈ° κ²°μ /*flex: <grow> <shrink> <basis>*/
flex: 0 1 auto;
ν½μ°½ μ§μ, μμμ ν¬κΈ°κ° λμ΄λμΌ ν λ, μΌλ§λ λμ΄λ κ²μΈμ§ κ²°μ νλ€.
<main>
<div id="box1" class="box">box1</div>
<div id="box2" class="box">box2</div>
<div id="box3" class="box">box3</div>
</main>
box1μλ§ flex-grow: 1
ν΄μ£Όλ©΄ κ³΅κ° μ°¨μ§ λΉμ¨μ΄box1:box2:box3 = 1:0:0
box1,2μλ§ flex-grow: 1
ν΄μ£Όλ©΄, 1:1:0
λͺ¨λ flex-grow: 1
ν΄μ£Όλ©΄, 1:1:1
μμΆ μ§μ, μμμ ν¬κΈ°κ° μ€μ΄λ€μ΄μΌ ν λ, μΌλ§λ μ€μ΄λ€ κ²μΈμ§ κ²°μ νλ€.
λΉμ¨λ‘ λ μ΄μμμ μ§μ ν κ²½μ°, shrinkλ μ€μ ν¬κΈ°λ₯Ό μμΈ‘νκΈ°κ° μ΄λ ΅κΈ° λλ¬Έμ grow μμ±μ μ¬μ©νλ κ²μ΄ μ’λ€. flex-grow μμ±μΌλ‘ λΉμ¨λ³κ²½ μ, flex=shrink μμ±μ 1(default)λ‘ λμ΄λ 무방νλ€.
μμμ κΈ°λ³Έ ν¬κΈ°λ₯Ό κ²°μ νλ€. width
μ flex-basis
λ₯Ό λμμ μ¬μ©νλ κ²½μ°, flex-basis
κ° μ°μ λλ€.
flex-growκ° 0μΌλ, basis ν¬κΈ° μ§μ μ ν¬κΈ°κ° μ μ§λλ€.
ex) growλ₯Ό 0:1:1λ‘ μ€μ ν ν , box1μλ§ flex-basis: 50px
λ‘ μ€μ νμ λ,
flex-basis : auto
μ flex-basis : 0
μ μ°¨μ΄?0μ "width: 0"λ₯Ό μ§μ νλ κ²κ³Ό κ°μΌλ, autoλ contentμ ν¬κΈ°μ λ§μΆ° μ§μ λλ€.
Reference: μ½λμ€ν μ΄μΈ