[HTML/CSS] Flexbox

λ””λ”©Β·2022λ…„ 10μ›” 28일
0

Section

λͺ©λ‘ 보기
7/18
post-thumbnail

πŸ•– DAY +7 / 2022. 10. 28

SEB FE / Section1 / Unit6 / HTML/CSS ν™œμš©



πŸ“Œ Today I Learned

  • μ™€μ΄μ–΄ν”„λ ˆμž„
  • λ ˆμ΄μ•„μ›ƒ 리셋
  • Flexbox

πŸ’¬ μ™€μ΄μ–΄ν”„λ ˆμž„(Wireframe)μ΄λž€?

μ›Ή λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  λ•Œ λ ˆμ΄μ•„μ›ƒμ˜ λΌˆλŒ€λ₯Ό κ·Έλ¦¬λŠ” 단계λ₯Ό μ™€μ΄μ–΄ν”„λ ˆμž„μ΄λΌκ³  ν•œλ‹€.
μ•„μ£Ό λ‹¨μˆœν•˜κ²Œ, λ ˆμ΄μ•„μ›ƒκ³Ό μ œν’ˆμ˜ ꡬ쑰λ₯Ό λ³΄μ—¬μ£ΌλŠ” μš©λ„μ΄λ‹€.

μ™€μ΄μ–΄ν”„λ ˆμž„μ˜ κ°€μž₯ 큰 λͺ©μ μ€, ν™”λ©΄μ˜ μ˜μ—­μ„ κ΅¬λΆ„ν•˜λŠ” 일이닀.
κ·Έλž˜μ„œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 그림으둜 ν‘œν˜„ν•˜λŠ” μ™€μ΄μ–΄ν”„λ ˆμž„μ΄ μ•„λ‹ˆλΌ, 각 μ˜μ—­μ—μ„œ μ‚¬μš©ν•  μ£Όμš” νƒœκ·Έλ₯Ό λ©”λͺ¨ν•˜λŠ” ν˜•μ‹μœΌλ‘œ μ™€μ΄μ–΄ν”„λ ˆμž„μ„ μž‘μ„±ν•˜λŠ” 것이 μ’‹λ‹€.

<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>



πŸ’¬ λ ˆμ΄μ•„μ›ƒ 리셋

HTML λ¬Έμ„œλŠ” 기본적인 μŠ€νƒ€μΌμ„ 가지고 μžˆλ‹€. λ•Œλ•Œλ‘œ HTML λ¬Έμ„œκ°€ κ°–λŠ” κΈ°λ³Έ μŠ€νƒ€μΌμ΄, λ ˆμ΄μ•„μ›ƒμ„ μž‘λŠ” 데 λ°©ν•΄κ°€ λ˜κΈ°λ„ ν•œλ‹€.

  • λ°•μŠ€μ˜ μ‹œμž‘μ„ μ •ν™•νžˆ (0,0)의 μœ„μΉ˜μ—μ„œ μ‹œμž‘ν•˜κ³  싢은데, <body> μš”μ†Œκ°€ 가진 κΈ°λ³Έ μŠ€νƒ€μΌμ— μ•½κ°„μ˜ 여백이 μžˆλ‹€.
  • width, height 계산이 여백을 ν¬ν•¨ν•˜μ§€ μ•Šμ•„ 계산에 어렀움이 μžˆλ‹€.
  • λΈŒλΌμš°μ €(크둬, μ‚¬νŒŒλ¦¬ λ“±)λ§ˆλ‹€ μ—¬λ°±μ΄λ‚˜ κΈ€κΌ΄κ³Ό 같은 κΈ°λ³Έ μŠ€νƒ€μΌμ΄ μ‘°κΈˆμ”© λ‹€λ₯΄λ‹€.

κΈ°λ³Έ μŠ€νƒ€μΌλ§μ„ μ œκ±°ν•˜λŠ” CSS μ½”λ“œμ˜ μ˜ˆμ‹œ

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  padding: 0;
}



πŸ’¬ Flexboxλž€?

Flexbox의 flex(flexible)λŠ” "잘 κ΅¬λΆ€λŸ¬μ§€λŠ”, μœ μ—°ν•œ"μ΄λΌλŠ” λœ»μ΄λ‹€.
Flexbox둜 λ ˆμ΄μ•„μ›ƒμ„ κ΅¬μ„±ν•œλ‹€λŠ” 것은, λ°•μŠ€λ₯Ό μœ μ—°ν•˜κ²Œ λŠ˜λ¦¬κ±°λ‚˜ 쀄여 λ ˆμ΄μ•„μ›ƒμ„ μž‘λŠ”λ‹€λŠ” 것이닀.

πŸ“‚ display: flex

display: flex λŠ” λΆ€λͺ¨ λ°•μŠ€ μš”μ†Œμ— μ μš©ν•΄, μžμ‹ λ°•μŠ€μ˜ λ°©ν–₯κ³Ό 크기λ₯Ό κ²°μ •ν•˜λŠ” λ ˆμ΄μ•„μ›ƒ ꡬ성 방법이닀.

μš°μ„  HTML둜 3개의 <div> μš”μ†Œλ₯Ό μžμ‹μœΌλ‘œ 가진 <main> μš”μ†Œλ₯Ό μž‘μ„±ν•΄ λ³Έλ‹€.

<main>
	<div>box1</div>
	<div>box2</div>
	<div>box3</div>
</main>

그리고 각 μš”μ†Œλ“€μ΄ λˆˆμ— 잘 보이도둝 CSS둜 <main> μš”μ†Œμ—λŠ” νŒŒλž€μƒ‰ 점선, <div> μš”μ†Œλ“€μ—λŠ” 빨간색 μ‹€μ„ μœΌλ‘œ ν…Œλ‘λ¦¬λ₯Ό μ„€μ •ν•΄μ£Όκ³ , μ „μ²΄μ μœΌλ‘œ margin κ³Ό padding 도 10ν”½μ…€μ”© μ£Όκ² λ‹€.

main {
    border: 1px dotted blue;
  }
  
  div {
    border: 1px solid red;
  }
  
  * {
    margin: 10px;
    padding: 10px;
  }

그럼 λ‹€μŒκ³Ό 같은 화면이 λ‚˜μ˜€λŠ” 것을 확인할 수 μžˆλ‹€.
이처럼 <div> μš”μ†Œλ“€μ€ 별닀λ₯Έ 섀정을 해주지 μ•ŠμœΌλ©΄ μœ„μͺ½μ—μ„œλΆ€ν„° μ„Έλ‘œλ‘œ μ •λ ¬λ˜λ©°, κ°€λ‘œλ‘œ λ„“κ²Œ 곡간을 μ°¨μ§€ν•˜λŠ” 것을 확인할 수 μžˆλ‹€.

이 μƒνƒœμ—μ„œ λΆ€λͺ¨ μš”μ†ŒμΈ <main> μš”μ†Œμ— display: flex 속성을 μ μš©ν•΄λ³΄μž.

main {
    display: flex;
    border: 1px dotted blue;
  }
  
  ...


이처럼 Flexbox 속성듀을 ν™œμš©ν•˜λ©΄ μš”μ†Œμ˜ μ •λ ¬, μš”μ†Œκ°€ μ°¨μ§€ν•˜λŠ” 곡간을 섀정해쀄 수 μžˆλ‹€. 그럼 Flexbox 속성듀은 μ–΄λ–€ 것이 μžˆλŠ”μ§€ μ•Œμ•„λ³΄μž.

πŸ“‚ λΆ€λͺ¨ μš”μ†Œμ— μ μš©ν•΄μ•Όν•˜λŠ” Flexbox 속성듀

1. flex-direction : μ •λ ¬ μΆ• μ •ν•˜κΈ°
flex-direction 속성은 λΆ€λͺ¨ μš”μ†Œμ— μ„€μ •ν•΄μ£ΌλŠ” μ†μ„±μœΌλ‘œ, μžμ‹ μš”μ†Œλ“€μ„ μ •λ ¬ν•  μ •λ ¬ 좕을 μ •ν•œλ‹€. 아무 섀정도 해주지 μ•ŠμœΌλ©΄ 기본적으둜 κ°€λ‘œ 정렬을 ν•œλ‹€.

main {
	display: flex;
	flex-direction : row;
}
	/* λΆ€λͺ¨ μš”μ†ŒμΈ main에 μž‘μ„±ν•˜μ—¬ μžμ‹ μš”μ†ŒμΈ div듀을 μ •λ ¬ν•  좕을 μ •ν•œλ‹€ */

2. flex-wrap : 쀄 λ°”κΏˆ μ„€μ •ν•˜κΈ°
flex-wrap 속성은 ν•˜μœ„ μš”μ†Œλ“€μ˜ 크기가 μƒμœ„ μš”μ†Œμ˜ 크기λ₯Ό λ„˜μœΌλ©΄ μžλ™ 쀄 λ°”κΏˆμ„ ν•  것인지 μ •ν•œλ‹€. μ„€μ •ν•΄ 주지 μ•ŠμœΌλ©΄ 쀄 λ°”κΏˆμ„ ν•˜μ§€ μ•ŠλŠ”λ‹€.

main {
	display: flex;
	**flex-wrap : nowrap;**
}
	/* λΆ€λͺ¨ μš”μ†ŒμΈ main에 μž‘μ„±ν•˜μ—¬ μžμ‹ μš”μ†ŒμΈ divλ“€μ˜ 쀄 λ°”κΏˆμ„ μ–΄λ–»κ²Œ 할지 μ •ν•œλ‹€ */

3. justify-content : μΆ• μˆ˜ν‰ λ°©ν–₯ μ •λ ¬
justify-content 속성은 μžμ‹ μš”μ†Œλ“€μ„ μΆ•μ˜ μˆ˜ν‰ λ°©ν–₯으둜 μ–΄λ–»κ²Œ μ •λ ¬ν•  것인지 μ •ν•œλ‹€. μš”μ†Œλ“€μ΄ κ°€λ‘œλ‘œ μ •λ ¬λ˜μ–΄ μžˆλ‹€λ©΄ κ°€λ‘œ λ°©ν–₯으둠 μ–΄λ–»κ²Œ μ •λ ¬ν•  것인지, μ„Έλ‘œλ‘œ μ •λ ¬λ˜μ–΄ μžˆλ‹€λ©΄ μ„Έλ‘œ λ°©ν–₯으둠 μ–΄λ–»κ²Œ μ •λ ¬ν•  것인지 μ •ν•˜λŠ” 속성이닀.

μ£Όμš” μ†μ„±κ°’μœΌλ‘œλŠ” flex-start, flex-end, center, space-between, space-around이 μžˆλ‹€.

  • flex-direction : row인 경우 ↔
  • flex-direction : column인 경우 ↕️

4. align-items : μΆ• 수직 λ°©ν–₯ μ •λ ¬
align-items 속성은 μžμ‹ μš”μ†Œλ“€μ„ μΆ•μ˜ 수직 λ°©ν–₯으둜 μ–΄λ–»κ²Œ μ •λ ¬ν•  것인지 μ •ν•œλ‹€. μš”μ†Œλ“€μ΄ κ°€λ‘œλ‘œ μ •λ ¬λ˜μ–΄ μžˆλ‹€λ©΄ μ„Έλ‘œ λ°©ν–₯으둠 μ–΄λ–»κ²Œ μ •λ ¬ν•  것인지, μ„Έλ‘œλ‘œ μ •λ ¬λ˜μ–΄ μžˆλ‹€λ©΄ κ°€λ‘œ λ°©ν–₯으둠 μ–΄λ–»κ²Œ μ •λ ¬ν•  것인지 μ •ν•˜λŠ” 속성이닀.

μ£Όμš” μ†μ„±κ°’μœΌλ‘œλŠ” stretch, flex-start, flex-end, center, baseline이 μžˆλ‹€.

  • flex-direction : row인 경우 ↔

  • flex-direction : column인 경우 ↕️





μ°Έμ‘°
https://habit1014.tistory.com/54
Flexbox κ²Œμž„
https://flexboxfroggy.com/#ko
Grid κ²Œμž„
https://cssgridgarden.com/#ko



πŸ‘€ λŒμ•„λ³΄κΈ°

λΆ€λͺ¨ μš”μ†Œμ— λ“€μ–΄κ°€λŠ” 속성듀에 λŒ€ν•΄ λ°°μ› λ‹€. μ μž¬μ μ†Œμ— 잘 ν™œμš©ν•  수 있기λ₯Ό. border-boxλ₯Ό μ‚¬μš©ν•˜μ—¬ μ’€ 더 μ•ˆμ „ν•˜κ³  νŽΈλ¦¬ν•˜κ²Œ cssλ₯Ό μž‘μ„±ν•  수 μžˆμ„ λ“―ν•˜λ‹€.

profile
λ¬΄μ‚¬μ™€μš”... μ—΄κ³΅ν–μš”...

0개의 λŒ“κΈ€