- μμ΄μ΄νλ μ (Wireframe)
- μΉ λλ μ ν리μΌμ΄μ μ κ°λ°ν λ λ μ΄μμμ λΌλλ₯Ό 그리λ λ¨κ³.
- "μμ΄μ΄λ‘ μ€κ³λ λͺ¨μ"μ μλ―Έ.
- λͺ©μ (Mock-up)
- λλΆλΆμ μ°μ μμ λͺ©μ μ μ€λ¬Ό ν¬κΈ°μ λͺ¨νμ μλ―Έ.
- μ€λ¬Ό μ νμ΄ μλ 무νμ μΉ λλ μ±μ μ΄λ»κ² λͺ©μ μ λ§λ€κΉ?
- μΉ λλ μ±μ μ νμ΄λΌκ³ ν λ, λͺ©μ μ μ€μ μ νμ μλ λͺ¨μ΅κ³Ό λμΌνκ² HTML λ¬Έμλ₯Ό μμ±.
- μλ₯Ό λ€μ΄, νΈμ μμ±μ, νΈμ λ΄μ©, μμ±ν λ μ§ λ±μ HTML λ¬Έμ λ΄μ
νλμ½λ©
νλ λ°©μ.
β μμ
let tweet = { user: 'κΉμ½λ©', content: 'SNSλ μΈμμ...' }
β jsλ₯Ό μ΄μ©ν΄μ λ³μλ₯Ό μ΄μ©ν λ°μ΄ν° κ΄λ¦¬λ₯Ό / HTML λ¬Έμλ‘ νλμ½λ©ν΄μ νν. β
<div class="writer">κΉμ½λ©</div>
<div class="content">SNSλ μΈμμ...</div>
height
μμ±μ μΆκ°νλ©΄, μν λΆν μ λ³΄λ€ μ§κ΄μ μΌλ‘ ν μ μλ€.<body>
μμκ° κ°μ§ κΈ°λ³Έ μ€νμΌμ μ½κ°μ μ¬λ°±μ΄ μλ€.width
, height
κ³μ°μ΄ μ¬λ°±μ ν¬ν¨νμ§ μμ κ³μ°μ μ΄λ €μμ΄ μλ€.β κΈ°λ³Έ μ€νμΌλ§μ μ κ±°νλ CSSμ½λ μμ
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
}
π₯ Flexboxλ‘ λ μ΄μμ μ‘κΈ°
- Flex(Flexible)
- "μ ꡬλΆλ¬μ§λ, μ μ°ν" μ΄λΌλ λ».
- Flexboxλ‘ λ μ΄μμμ ꡬμ±νλ€λ κ²μ, λ°μ€λ₯Ό μ μ°νκ² λ리거λ μ€μ¬ λ μ΄μμμ μ‘λ λ°©λ².
display: flex
λ λΆλͺ¨ λ°μ€ μμμ μ μ©ν΄, μμ λ°μ€μ λ°©ν₯κ³Ό ν¬κΈ°λ₯Ό κ²°μ νλ λ μ΄μμ κ΅¬μ± λ°©λ².
- HTMLλ‘ 3κ°μ
<div>
μμλ₯Ό μμμΌλ‘ κ°μ§<main>
μμλ₯Ό μμ±ν΄μ.- κ° μμλ€μ΄ λμ μ 보μ΄λλ‘ CSSλ‘
<main>
μμμλ λΉ¨κ°μ μ μ ,<div>
μμλ€μλ μ΄λ‘μ μ€μ μΌλ‘ ν λ리λ₯Ό μ€μ .- μ 체μ μΌλ‘
margin
κ³Όpadding
λ 10ν½μ μ© μ£Όμ.
<main>
<div>box1</div>
<div>box2</div>
<div>box3</div>
</main>
main {
border: 1px dotted red;
}
div {
border: 1px solid green;
}
* {
margin: 10px;
padding: 10px;
}
μ΄μ²λΌ <div> μμλ€μ λ³λ€λ₯Έ μ€μ μ ν΄μ£Όμ§ μμΌλ©΄ μμͺ½μμλΆν° μΈλ‘λ‘ μ λ ¬λλ©°, κ°λ‘λ‘ λκ² κ³΅κ°μ μ°¨μ§νλ κ²μ νμΈν μ μλ€.
μ΄λ²μλ μ΄ μνμμ λΆλͺ¨ μμμΈ <main> μμμ display: flex μμ±μ μ μ©ν΄λ³΄μ.
main {
display: flex;
border: 1px dotted red;
}
μμ±μ μ μ©νλλ μμ μμμΈ <div> μμλ€μ΄ μΌμͺ½λΆν° κ°λ‘λ‘ μ λ ¬λ κ²κ³Ό λ΄μ©λ§νΌμ 곡κ°μ μ°¨μ§νλ κ²μ νμΈν μ μλ€.
μ΄μ²λΌ Flexbox μμ±λ€μ νμ©νλ©΄ μμμ μ λ ¬, μμκ° μ°¨μ§νλ 곡κ°μ μ€μ ν΄μ€ μ μλ€.
- Flexbox μμ±μ μ¬μ©ν λ μμ±μ μ§μ ν΄μ£Όλ μμΉκ° μ€μ.
- Flexbox μμ± μ€μμλ λΆλͺ¨ μμμ μ μ©ν΄μΌνλ μμ±λ€, μμ μμμ μ μ©ν΄μΌνλ μμ±λ€μ΄ μλ€.
- μ μ ν μμΉμ μμ±μ μ§μ ν΄μ£Όμ§ μμΌλ©΄ μμλ€μ΄ μνλλλ‘ μ λ ¬λμ§ μλλ€.
λΆλͺ¨ μμ
μ μ€μ ν΄μ£Όλ μμ±μΌλ‘, μμ μμλ€μ μ λ ¬ν μ λ ¬ μΆμ μ ν©λλ€. μ무 μ€μ λ ν΄μ£Όμ§ μμΌλ©΄ κΈ°λ³Έμ μΌλ‘ κ°λ‘ μ λ ¬.
μ€ λ°κΏμ νμ§ μλλ€.
β flex-direction : row μΈ κ²½μ° β
β flex-direction : column μΈ κ²½μ° βοΈ
β flex-direction : row μΈ κ²½μ° β
β flex-direction : column μΈ κ²½μ° βοΈ
flex: <grow(ν½μ°½ μ§μ)> <shrink(μμΆ μ§μ)> <basis(κΈ°λ³Έ ν¬κΈ°)>
//μμ μμμ flex μμ±μ λ°λ‘ μ€μ ν΄μ£Όμ§ μμΌλ©΄ λ€μκ³Ό κ°μ κΈ°λ³Έκ°μ΄ μ μ©
flex: 0 1 auto;
//κΌ flex μμ± μμ μΈ κ°μ§ κ°μ ν λ²μ μ€μ ν΄μ€ νμ μμ΄, κ° κ°μ λ°λ‘ μ§μ ν΄μ€ μλ μλ€.
flex-grow: 0;
flex-shrink: 1;
flex-basis: auto;
<main>
<div id="box1" class="box">box1</div>
<div id="box2" class="box">box2</div>
<div id="box3" class="box">box3</div>
</main>
β β
boxλ₯Ό 3κ°λ₯Ό λ§λ€μ΄ λκ³ 3κ°μ§ κ°μ μ€λͺ
ν΄λ³΄μ.
μΌλ§λ λμ΄λ κ²μΈμ§
λ₯Ό μλ―Έ.flex μμ±μ μ€μ νκΈ° μ , growμ κΈ°λ³Έ κ°μΈ 0μ λΉ κ³΅κ°μ΄ μμ΄λ λμ΄λμ§ μμμ μλ―Έ.
box1λ§ flex-grow : 1λ‘ μ€μ . flex-growμ κΈ°λ³Έκ°μ 0μ΄λ―λ‘ λλ¨Έμ§ λ°μ€λ flex-grow : 0μΈ μν
box2λ flex-grow : 1λ‘ μ€μ . box3λ§ flex-grow : 0μΈ μν
box3λ flex-grow : 1λ‘ μ€μ . μΈ λ°μ€ λͺ¨λ flex-grow : 1μΈ μν
flex-grow
μμ±κ³Ό flex-shrink
μμ±μ ν¨κ» μ¬μ©νλ μΌμ μΆμ²νμ§ μλλ€.flex-grow
μμ± λλ flex: <grow> 1 auto
μ κ°μ΄ grow
μμ±μ λ³νλ₯Ό μ£Όλ λ°©μμ κΆμ₯.flex-shrink
μμ±μ width
λ μ΄ν μ€λͺ
ν flex-basis
μμ±μ λ°λ₯Έ λΉμ¨μ΄λ―λ‘ μ€μ ν¬κΈ°λ₯Ό μμΈ‘νκΈ°κ° μ΄λ ΅κΈ° λλ¬Έ.flex-grow
μμ±μΌλ‘ λΉμ¨μ λ³κ²½νλ κ²½μ°, flex-shrink
μμ±μ κΈ°λ³Έκ°μΈ 1λ‘ λμ΄λ 무방.flex-grow
κ° 0μΌ λ, basis ν¬κΈ°λ₯Ό μ§μ νλ©΄ κ·Έ ν¬κΈ°λ μ μ§λλ€.첫 νμ΄νλ‘κ·Έλ¨μΌλ‘ μ μν [HTML/CSS] νμ© (κ³μ°κΈ° λͺ©μ
)
μ’μ νμ΄λΆμ λ§λμ κ²°κ³Όλ¬Όμ΄ λ무 λ§μμ λ λ€!π