🍎 듀어가기에 μ•žμ„œ

이 글은 λͺ¨λ˜ 웹을 μœ„ν•œ HTML5+CSS3 바이블을 κ³΅λΆ€ν•˜λ©° κΈ°μ–΅ν•΄λ‘˜ λ‚΄μš©λ“€μ„ κ°„λ‹¨ν•˜κ²Œ κΈ°λ‘ν•œ κΈ€μž…λ‹ˆλ‹€.
책에 λŒ€ν•œ μžμ„Έν•œ 사항은 링크λ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”. πŸ‘

πŸ“– 1. κ·Έλ¦¬λ“œ μ‹œμŠ€ν…œ

κ·Έλ¦¬λ“œ μ‹œμŠ€ν…œμ€ 의미 κ·ΈλŒ€λ‘œ 마치 λ°”λ‘‘νŒκ°™μ€ 격자λ₯Ό λ§Œλ“€μ–΄ κ·Έ 격자λ₯Ό μ‘°μœ¨ν•˜μ—¬ 자리λ₯Ό λ§Œλ“€κ³  컨텐츠λ₯Ό λ°°μΉ˜ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

정적 κ·Έλ¦¬λ“œ, 동적 κ·Έλ¦¬λ“œ, λ°˜μ‘ν˜• κ·Έλ¦¬λ“œ λͺ¨λ‘ float μ†μ„±μœΌλ‘œ κ·Έλ¦¬λ“œ λ ˆμ΄μ•„μ›ƒμ„ κ΅¬μ„±ν•΄μ™”μŠ΅λ‹ˆλ‹€.
κ·ΈλŸ¬λ‚˜ float 속성은 λ¬Έμ„œ 내뢀에 이미지 등을 λ„μ›Œ 좜λ ₯ν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ§„ μ†μ„±μž…λ‹ˆλ‹€.
μ–΄μ©Œλ‹€λ³΄λ‹ˆ 이λ₯Ό λ ˆμ΄μ•„μ›ƒμ— ν™œμš©ν•˜κ²Œ λ˜λ‹€λ³΄λ‹ˆ 20년이 λ„˜λŠ” μ„Έμ›”λ™μ•ˆ μ‚¬μš©ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. πŸ™ƒ

κ·Έλ¦¬λ“œ λ ˆμ΄μ•„μ›ƒ

μœ„μ™€ 같은 이유둜 CSS3μ—μ„œ μ•„μ˜ˆ λ ˆμ΄μ•„μ›ƒμ„ ꡬ성할 λ•Œ μ‚¬μš©ν•  수 μžˆλŠ” display ν‚€μ›Œλ“œλ‘œ flex와 gridλ₯Ό μΆ”κ°€ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
κ·Έλ¦¬λ“œ λ ˆμ΄μ•„μ›ƒμ— κ΄€ν•΄ κ°„λ‹¨ν•œ λ™μž‘λ“€μ„ μ•„λž˜ μ½”λ“œμ™€ ν•¨κ»˜ 보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

<head>
  <style>
    .container {
      /* 🌟 grid λ ˆμ΄μ•„μ›ƒμ„ μ μš©ν•©λ‹ˆλ‹€. */
      display: grid;
      /* 🌟 λ ˆμ΄μ•„μ›ƒμ˜ μ—΄(μ„Έλ‘œ)을 200pxμ”© 3개둜 λ‚˜λˆ•λ‹ˆλ‹€. */
      grid-template-columns: 200px 200px 200px;
      /* 🌟 λ ˆμ΄μ•„μ›ƒμ˜ ν–‰(κ°€λ‘œ)을 2:1의 λΉ„μœ¨λ‘œ λ‚˜λˆ•λ‹ˆλ‹€. */
      grid-template-rows: 1fr 2fr 1fr;
      /* 🌟 ν–‰κ³Ό μ—΄ ꡬ뢄을 ν•œλ²ˆμ— λ‚˜νƒ€λ‚΄λŠ” ν‘œν˜„λ²•μž…λ‹ˆλ‹€.(μœ„μ˜ 2개 쀄을 ν•œλ²ˆμ— ν‘œν˜„) */
      grid-template: 1fr 2fr 1fr / 200px 200px 200px;
    }

    /* ⭐🌟🀩 μ—¬κΈ°κΉŒμ§€ 보면 총 3x3으둜 총 9개의 κ²©μžκ°€ λ§Œλ“€μ–΄μ§„ 것을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.
    ν—Œλ°, μ•„λž˜ 셀은 4개만 μ‘΄μž¬ν•©λ‹ˆλ‹€. λ‹€μŒκ³Ό 같이 격자λ₯Ό κ²°ν•©μ‹œμΌœ 4개의 칸으둜 λ§Œλ“€λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. */

    .ceall-a {
      grid-row-start: 1;
      grid-row-end: 4;
      /* grid-row: 1 / 4; μ΄λ ‡κ²Œλ„ ν‘œν˜„ κ°€λŠ₯ */
      grid-column-start: 1;
      grid-column-end: 3;
      /* grid-column: 1 / 3; μ΄λ ‡κ²Œλ„ ν‘œν˜„ κ°€λŠ₯ */

      /* 🌟 μœ„μ˜ λͺ¨λ“  μš”μ†Œλ₯Ό λ‹€μŒκ³Ό 같이 ν•œλ²ˆμ— ν‘œν˜„λ„ κ°€λŠ₯ν•©λ‹ˆλ‹€.
      grid-area: 1 / 1 / 4 / 3; 
      (grid-row-start/grid-column-start/grid-row-end/grid-column-end)
      */
    }

    /* 🌟 총 9개의 κ²©μžκ°€ μžˆμ„ λ•Œ, μ‹œμž‘κ³Ό 끝의 경계선을 ν¬ν•¨ν•΄μ„œ μ„Έλ‘œ κ°€λ‘œ λͺ¨λ‘ 4κ°œμ”©μ˜ 경계선을 κ°–κ²Œ λ©λ‹ˆλ‹€.
    이 λ•Œ 각 κ²½κ³„μ„ μ˜ μ²˜μŒλΆ€ν„° λκΉŒμ§€ 1~4의 번호λ₯Ό κ°–κ²Œλ©λ‹ˆλ‹€. 이 번호λ₯Ό 톡해 μœ„μ™€ 같이 μŠ€νƒ€μΌμ„ μ μš©ν•˜λ©΄
    cell-aλŠ” κ°€λ‘œλ‘œλŠ” 3/4, μ„Έλ‘œλ‘œλŠ” μ „λΆ€ λ₯Ό μ°¨μ§€ν•˜λŠ” λͺ¨μ–‘을 κ°–κ²Œ λ˜μ–΄ 2*3의 μ˜μ—­μ„ μ°¨μ§€ν•©λ‹ˆλ‹€.
    그리고 λ‚˜λ¨Έμ§€ ν•œ μΉΈμ”©μ˜ 총 3개의 칸을 b, c, dκ°€ μ°¨μ§€ν•˜κ²Œ λ©λ‹ˆλ‹€. */
  </style>
</head>
<body>
  <div class="container">
    <div class="cell-a">cell-a</div>
    <div class="cell-b">cell-b</div>
    <div class="cell-c">cell-c</div>
    <div class="cell-d">cell-d</div>
  </div>
</body>

λ¬Έμžμ—΄λ‘œ λ°°μΉ˜ν•˜κΈ°

grid-template-areas 속성과 grid-area 속성을 μ‘°ν•©ν•˜λ©΄ λ¬Έμžμ—΄μ„ 톡해 κ·Έ 배열을 마치 λ³Ό 수 μžˆλ“―μ΄ λ ˆμ΄μ•„μ›ƒμ„ ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€.

<!DOCTYPE html>
<html>
  <head>
    <title>CSS3 Grid System</title>
    <style>
      * {
        /* κΈ°λ³Έ μ΄ˆκΈ°ν™” */
        margin: 0;
        padding: 0;
      }
      .container {
        /* λ„ˆλΉ„ κ³ μ • and 쀑앙 μ •λ ¬*/
        width: 960px;
        margin: 0 auto;
        /* κ·Έλ¦¬λ“œ κ΅¬μ„±ν•˜κΈ° */
        display: grid;
        grid-template: 70px 1fr 70px / 200px 1fr;
        grid-gap: 5px;
        /* 🌟 μ„œλ‘œ μ ‘ν•˜λŠ” 헀더 그리고 ν‘Έν„°λŠ” κ·Έ λ‘˜μ΄ ν•©μ³μ§€κ²Œ λ˜μ–΄ μ…€ ν•˜λ‚˜κ°€ 2개의 격자λ₯Ό μ°¨μ§€ν•˜κ²Œ λ©λ‹ˆλ‹€. */
        grid-template-areas:
          'header header'
          'aside content'
          'footer footer';
      }
      [class*='cell'] {
        box-sizing: border-box;
        border: 5px solid black;
        padding: 10px;
        border-radius: 10px;
      }
      /* 🌟 λ‹€μ†Œ λ‚―μ„€μ§€λ§Œ, ''둜 감싸지 μ•ŠμŠ΅λ‹ˆλ‹€. 마치 λ³€μˆ˜μ²˜λŸΌ κ·ΈλŒ€λ‘œ μ μ–΄μ€λ‹ˆλ‹€. */
      .cell-header {
        grid-area: header;
      }
      .cell-aside {
        grid-area: aside;
      }
      .cell-content {
        grid-area: content;
      }
      .cell-footer {
        grid-area: footer;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div class="cell-header">
        <h1>Lorem ipsum dolor sit amet</h1>
      </div>
      <div class="cell-aide">
        <p>Lorem ipsum</p>
        <p>dolor sit amet</p>
        <p>Lorem ipsum</p>
        <p>dolor sit amet</p>
      </div>
      <div class="cell-content">
        <h1>Lorem ipsum dolor sit amet</h1>
        <p>Lorem ipsum dolor sit amet</p>
        <p>Lorem ipsum dolor sit amet</p>
      </div>
      <div class="cell-footer">Lorem ipsum dolor sit amet</div>
    </div>
  </body>
</html>

πŸ“• 정리

κ·Έλ¦¬λ“œλŠ” 말 κ·ΈλŒ€λ‘œ 마치 λ°”λ‘‘νŒ λͺ¨μ–‘μœΌλ‘œ 격자λ₯Ό ν˜•μ„±ν•˜κ³  κ·Έ μ•ˆμ—μ„œ κ²©μžλ“€μ„ 자유자재둜 κ²°ν•©ν•˜μ—¬ λ ˆμ΄μ•„μ›ƒμ„ κ΅¬μ„±ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.
이후 각 μš”μ†Œ(컨텐츠)λ₯Ό κ·Έ λ ˆμ΄μ•„μ›ƒμ— μ μš©μ‹œν‚€κ²Œ λ©λ‹ˆλ‹€.(마치 자리λ₯Ό 미리 λ‹€ λ§Œλ“€κ³  κ·Έ μ•ˆμ— κΎΈκ²¨λ„£λŠ” λŠλ‚Œ)

개인적으둜 κ·Έλ¦¬λ“œμ— λŒ€ν•΄μ„œ 정말 쉽고 재미있게 배울 수 μžˆλŠ” μ‚¬μ΄νŠΈλΌκ³  μƒκ°ν•©λ‹ˆλ‹€.
> Grid Garden κ°•μΆ”! πŸ‘