GiantStepDEV
article thumbnail

๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ

  • ์›น ํŽ˜์ด์ง€์—์„œ 2์ฐจ์› ๋ฐฉ์‹์œผ๋กœ ๋ ˆ์ด์•„์›ƒ์„ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ ์•ˆ๋œ ์Šคํƒ€์ผ ์ž…๋‹ˆ๋‹ค.
  • 2์ฐจ์› ๋ฐฉ์‹์ด๋ž€ ๊ฐ€๋กœ(row)์™€ ์„ธ๋กœ(column)๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•ด ๋ ˆ์ด์•„์›ƒ์„ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ์‹ ์ž…๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๋“œ ๋ฐ•์Šค๋Š” '๊ทธ๋ฆฌ๋“œ ์ปจํ…Œ์ด๋„ˆ'์™€ '๊ทธ๋ฆฌ๋“œ ํ•ญ๋ชฉ'์œผ๋กœ ๊ตฌ์„ฑ ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐ˜์‘ํ˜• ๋””์ž์ธ์—๋„ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ํ™”๋ฉด์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๊ฒฉ์ž์˜ ํฌ๊ธฐ์™€ ์š”์†Œ๋“ค์˜ ๋ฐฐ์น˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์š”์†Œ

  • ํ–‰(row) : ๊ฐ€๋กœ์ค„
  • ์—ด(column) : ์„ธ๋กœ์ค„
  • ๊ทธ๋ฆฌ๋“œ ์…€ : ํ–‰๊ณผ ์—ด์ด ๋งŒ๋‚˜ ์ด๋ฃจ์–ด์ง€๋Š” ํ•˜๋‚˜์˜ ๊ณต๊ฐ„
  • ๊ทธ๋ฆฌ๋“œ ๊ฐญ : ๊ทธ๋ฆฌ๋“œ ์…€๊ณผ ๊ทธ๋ฆฌ๋“œ ์…€ ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ
  • ๊ทธ๋ฆฌ๋“œ ์•„์ดํ…œ : ๊ทธ๋ฆฌ๋“œ ์…€ ์•ˆ์—์„œ ํ‘œํ˜„๋˜๋Š” ์ปจํ…์ธ 
  • ๊ทธ๋ฆฌ๋“œ ์ปจํ…Œ์ด๋„ˆ : ์ตœ์ƒ์œ„ ๋ถ€๋ชจ ์š”์†Œ

๊ธฐ๋ณธ ์†์„ฑ

display ์†์„ฑ

  • ๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ์€ ํ•ญ์ƒ display ์†์„ฑ๊ฐ’์„ grid ํ˜น์€ inline-grid๋กœ ์ง€์ • ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ์†์„ฑ์ด ์ง€์ •๋œ ์š”์†Œ๋Š” ๊ทธ๋ฆฌ๋“œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋˜๊ณ , ์ž์‹ ์š”์†Œ๋Š” ๊ทธ๋ฆฌ๋“œ ์•„์ดํ…œ์ด ๋ฉ๋‹ˆ๋‹ค.

display: grid

display: inline-grid

grid-template-columns, grid-template-rows ์†์„ฑ

์˜ˆ์‹œ

  • 3์—ด 2ํ–‰ ๋งŒ๋“ค๊ธฐ
.grid-item{
    color:black;
    background-color: royalblue;
  }
  .grid-item:nth-child(2n){
    background-color: orange;
  }

  .grid-container {
    display: grid;
    grid-template-columns: 200px 200px 200px;
    grid-template-rows: 100px 100px;
  }
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="grid-container">
        <div class="grid-item">๊ทธ๋ฆฌ๋“œ ๋ฐ•์Šค 1๋ฒˆ</div>
        <div class="grid-item">๊ทธ๋ฆฌ๋“œ ๋ฐ•์Šค 2๋ฒˆ</div>
        <div class="grid-item">๊ทธ๋ฆฌ๋“œ ๋ฐ•์Šค 3๋ฒˆ</div>
        <div class="grid-item">๊ทธ๋ฆฌ๋“œ ๋ฐ•์Šค 4๋ฒˆ</div>
        <div class="grid-item">๊ทธ๋ฆฌ๋“œ ๋ฐ•์Šค 5๋ฒˆ</div>
    </div>
</body>
</html>

์ƒ๋Œ€์ ์ธ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋Š” fr๋‹จ์œ„

  • ๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ์˜ ํ–‰๊ณผ ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•  ๋•Œ ํ”ฝ์…€(px)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ํฌ๊ธฐ๊ฐ€ ํ•ญ์ƒ ๊ณ ์ •๋˜๋ฏ€๋กœ ๋ฐ˜์‘ํ˜• ์›น ๋””์ž์ธ์— ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์•„๋ž˜์˜ ์ฝ”๋“œ๋Š” 2ํ–‰ 3์—ด์˜ ๊ทธ๋ฆฌ๋“œ ๋ฐ•์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ ๊ฐ๊ฐ์˜ ํ–‰์€ 100px์˜ ๋†’์ด๋ฅผ ๊ฐ€์ง€๊ณ , ์—ด์€ 2:1:1์˜ ๋น„์œจ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
.grid-container {
    margin: 20px;
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    grid-template-rows: 100px 100px;
  }

์ž๋™์œผ๋กœ ์ปฌ๋Ÿผ ๊ฐœ์ˆ˜๋ฅผ ์กฐ์ ˆํ•˜๋Š” auto-fit, auto-fill

๊ทธ๋ฆฌ๋“œ ์…€์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ฏธ๋ฆฌ ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์€ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • auto-fit : ๊ทธ๋ฆฌ๋“œ ์˜์—ญ ์•ˆ์— ๋‚จ๋Š” ๊ณต๊ฐ„์ด ์žˆ๋‹ค๋ฉด, ๊ทธ๋ฆฌ๋“œ ์…€์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ณ  ๊ทธ๋ฆฌ๋“œ ์…€์˜ ๊ฐœ์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ์ฆ๊ฐ€์‹œ์ผœ ๊ทธ๋ฆฌ๋“œ ์˜์—ญ์„ ์ฑ„์›๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ๊ทธ๋ฆฌ๋“œ ์…€์˜ ๊ฐœ์ˆ˜์™€ ํฌ๊ธฐ๋ฅผ ๋ชจ๋‘ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
.container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

โœ… minmax()๋Š” ๊ทธ๋ฆฌ๋“œ ํ•ญ๋ชฉ์˜ ์ตœ์†Œ ํฌ๊ธฐ์™€ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ์ •์˜ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ) minmax(200px, 1fr) : ์ตœ์†Œ ๋„ˆ๋น„ 200px, ์ตœ๋Œ€ ๋„ˆ๋น„ 1fr

  • auto-fill : ๊ทธ๋ฆฌ๋“œ ์˜์—ญ ์•ˆ์— ๊ทธ๋ฆฌ๋“œ ์…€์ด ๊ฐ€๋“ ์ฐฐ ๋•Œ๊นŒ์ง€ ์…€์˜ ๊ฐœ์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ๊ทธ๋ฆฌ๋“œ ์…€์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ์ง€ ์•Š๊ณ , ๊ทธ๋ฆฌ๋“œ ์…€์˜ ๊ฐœ์ˆ˜๋งŒ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.
    ๋งŒ์•ฝ ๊ทธ๋ฆฌ๋“œ ์˜์—ญ ์•ˆ์— ๋‚จ๋Š” ๊ณต๊ฐ„์ด ์žˆ๋‹ค๋ฉด, ๋‚จ๋Š” ๊ณต๊ฐ„์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
.container {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}

์ •๋ฆฌ!!

  • auto-fit์€ ๊ทธ๋ฆฌ๋“œ ํ•ญ๋ชฉ์˜ ์ˆ˜๋ฅผ ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ฉด์„œ 'ํ•ญ๋ชฉ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •'ํ•˜์—ฌ ๊ทธ๋ฆฌ๋“œ๋ฅผ ์ฑ„์šฐ๋ ค๊ณ  ํ•˜๋ฉฐ,
    auto-fill์€ ๊ทธ๋ฆฌ๋“œ ํ•ญ๋ชฉ์˜ ํฌ๊ธฐ๋ฅผ '์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€'ํ•˜๋ฉด์„œ ๋” ๋งŽ์€ ํ•ญ๋ชฉ์„ ๊ทธ๋ฆฌ๋“œ์— ์ฑ„์šฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

row-gap, column-gap ์†์„ฑ

  • ๊ทธ๋ฆฌ๋“œ ์…€์˜ ๊ฐ„๊ฒฉ์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
.grid-container {
    margin: 20px;
    display: grid;
    grid-template-columns: repeat(3, minmax(50px, 200px));
    grid-template-rows: repeat(2, minmax(10px, auto));
    row-gap: 10px;
    column-gap: 10px;
  }

์ •๋ ฌ ์†์„ฑ

align-items์™€ align-self ์†์„ฑ

  • align-items ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋ฆฌ๋“œ ์…€์˜ ๋†’์ด๊ฐ€ ๊ทธ๋ฆฌ๋“œ ์•„์ดํ…œ๋ณด๋‹ค ํด ๋•Œ ๊ฐ ๊ทธ๋ฆฌ๋“œ ์•„์ดํ…œ์„ ๊ฐ ๊ทธ๋ฆฌ๋“œ ์…€์˜ ์„ธ๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

grid-template-columns:100px 100px 100px;
grid-template-rows:100px 100px;
align-items:stretch;

justify-items์™€ justify-self ์†์„ฑ

  • ๊ทธ๋ฆฌ๋“œ ์•„์ดํ…œ์„ ๊ฐ ๊ทธ๋ฆฌ๋“œ ์…€์˜ ๊ฐ€๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

โœ… ์†์„ฑ๊ฐ’์€ align-items ์†์„ฑ๊ณผ ๊ฐ™๊ณ  ๋ฐฉํ–ฅ๋งŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๋ฐฐ์น˜ ์†์„ฑ

grid-template-areas : ์˜ˆ์ œ1๋ฒˆ

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ</title>
  <style>
    * {
      margin: 0;
    }
    .grid-container {
      margin: 20px;
      width: calc(100vw-40px);
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      grid-template-rows: repeat(3, 100px);
      grid-template-areas: 
        "header header header"
        "sidebar content content"
        "footer footer footer";
      row-gap: 2px;
      column-gap: 2px;
    }
    .grid-item {
      color: black;
      /* ์ •์ค‘์•™์— ๋†“๊ณ  ์‹ถ์„ ๋•Œ */
      display: flex;
      justify-content: center;
      align-items: center;
      /* ------------------ */
      border: 1px solid darkblue;
    }
    #header {
      grid-area: header;
      background-color: green;
    }
    #sidebar {
      grid-area: sidebar;
      background-color: brown;
    }
    #content {
      grid-area: content;
      background-color: blueviolet;
    }
    #footer {
      grid-area: footer;
      background-color: orange;
    }

  </style>
</head>
<body>
  <div class="grid-container">
    <div id="header" class="grid-item">header ์˜์—ญ</div>
    <div id="sidebar" class="grid-item">sidebar ์˜์—ญ</div>
    <div id="content" class="grid-item">content ์˜์—ญ</div>
    <div id="footer" class="grid-item">footer ์˜์—ญ</div>
  </div>
</body>
</html>

grid-template-areas : ์˜ˆ์ œ 2๋ฒˆ

โœ… . ์„ ์“ฐ๋ฉด ํ•ด๋‹น ์˜์—ญ์€ ๋นˆ ๊ณต๊ฐ„์œผ๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    #container {
      width: 700px;
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      grid-template-rows: repeat(3, 100px);
      grid-template-areas: 
        "box1 box1 box1"
        "box2 box3 box3"
        "box2 . box4";
    }
    .box {
      color: #fff;
    }
    .box1 {
      background-color: #3689ff;
      grid-area: box1;
    }
    .box2 {
      background-color: #00cf12;
      grid-area: box2;
    }
    .box3 {
      background-color: #ff9019;
      grid-area: box3;
    }
    .box4 {
      background-color: #ffd000;
      grid-area: box4;
    }
  </style>
</head>
<body>
  <div id="container">
    <div class="box box1">box1</div>
    <div class="box box2">box2</div>
    <div class="box box3">box3</div>
    <div class="box box4">box4</div>
  </div>
</body>
</html>

๊ทธ๋ฆฌ๋“œ ๋ผ์ธ : ์˜ˆ์ œ 3๋ฒˆ

  • ๊ทธ๋ฆฌ๋“œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ–‰๊ณผ ์—ด์„ ๊ทธ๋ฆฌ๋Š” ์„ ์„ ๊ทธ๋ฆฌ๋“œ ๋ผ์ธ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ์•„๋ž˜์˜ ๊ฐ•์กฐ์„ ์€ ์ปฌ๋Ÿผ 2๋ผ์ธ ์ž…๋‹ˆ๋‹ค.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>grid-line</title>
  <style>
    .grid-container{
      display:grid;
      grid-template-columns:100px 100px 100px;
      grid-template-rows:100px 100px 100px;
      color: #fff;
    }
    .grid-item:nth-child(1){
      grid-column-start:1;
      grid-column-end:3;
      background-color: red;
    }
    .grid-item:nth-child(2){
      grid-column-start:3;
      grid-column-end:4;
      background-color: green;
    }
    .grid-item:nth-child(3){
      grid-row-start:2;
      grid-row-end:4;
      background-color:orange;
    }
    .grid-item:nth-child(4){
      grid-column-start:2;
      grid-column-end:4;
      grid-row-start:2;
      grid-row-end:4;
      background-color:blue;
    }
  </style>
</head>
<body>
  <div class="grid-container">
    <div class="grid-item">1</div>
    <div class="grid-item">2</div>
    <div class="grid-item">3</div>
    <div class="grid-item">4</div>
  </div>
</body>
</html>

๊ทธ๋ฆฌ๋“œ ๋ผ์ธ : ์˜ˆ์ œ 4๋ฒˆ

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>grid line</title>
  <style>
    #container {
      width: 700px;
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      grid-template-rows: repeat(3, 100px);
    }
    .box {
      padding: 15px;
      color: #fff;
      font-weight: bold;
      text-align: center;
    }
    .box1 {
      background-color: #3689ff;
      grid-column: 1/4;
    }
    .box2 {
      background: #00cf12;
      grid-row: 2/4;
      grid-column-start: 1;
    }
    .box3 {
      background-color: #ff9019;
      grid-column: 2/4;
      grid-row-start: 2;
    }
    .box4 {
      background-color: #ffd000;
      grid-column: 3/4;
      grid-row-start: 3;
    }
  </style>
</head>
<body>
  <div id="container">
    <div class="box box1">box1</div>
    <div class="box box2">box2</div>
    <div class="box box3">box3</div>
    <div class="box box4">box4</div>
  </div>
</body>
</html>

์‹ค์Šต ์˜ˆ์ œ - ๊ฐค๋Ÿฌ๋ฆฌ ๋งŒ๋“ค๊ธฐ

๋‚ด ์ฝ”๋“œ

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    body {
      background-color: #eee;
    }
    #container {
      width: 700px;
      margin: 0 auto;
      display: grid;
      grid-template-columns: repeat(auto-fit, 1fr);
      grid-template-rows: repeat(3, 1fr);
      grid-template-areas: 
        "box1 box2 box3"
        "box4 box5 box6"
        "box7 box8 .";
      column-gap: 5px;
      row-gap: 5px;
    }
    .box {
      background-color: #fff;
      box-sizing: border-box;
      padding: 15px;
      border: 1px solid darkgray;
      display: flex;
      flex-direction: column;
    }
    .box p {
      font-size: 0.9em;
      font-weight: lighter;
    }
  </style>
</head>
<body>
  <div id="container">
    <div class="box box1">
      <h3>์‚ฌ์ง„ ์ œ๋ชฉ</h3>
      <img src="./images/cup-1.jpg" alt="">
      <p>์‚ฌ์ง„ ์„ค๋ช… : Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit. Ullam, numquam, Neque mollitia esse blanditils facere.</p>
    </div>
    <div class="box box2">
      <h3>์‚ฌ์ง„ ์ œ๋ชฉ</h3>
      <img src="./images/cup-2.jpg" alt="">
      <p>์‚ฌ์ง„ ์„ค๋ช… : Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit. Ullam, numquam, Neque mollitia esse blanditils facere.</p>
    </div>
    <div class="box box3">
      <h3>์‚ฌ์ง„ ์ œ๋ชฉ</h3>
      <img src="./images/cup-3.jpg" alt="">
      <p>์‚ฌ์ง„ ์„ค๋ช… : Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit. Ullam, numquam, Neque mollitia esse blanditils facere.</p>
    </div>
    <div class="box box4">
      <h3>์‚ฌ์ง„ ์ œ๋ชฉ</h3>
      <img src="./images/cup-4.jpg" alt="">
      <p>์‚ฌ์ง„ ์„ค๋ช… : Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit. Ullam, numquam, Neque mollitia esse blanditils facere.</p>
    </div>
    <div class="box box5">
      <h3>์‚ฌ์ง„ ์ œ๋ชฉ</h3>
      <img src="./images/cup-5.jpg" alt="">
      <p>์‚ฌ์ง„ ์„ค๋ช… : Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit. Ullam, numquam, Neque mollitia esse blanditils facere.</p>
    </div>
    <div class="box box6">
      <h3>์‚ฌ์ง„ ์ œ๋ชฉ</h3>
      <img src="./images/cup-6.jpg" alt="">
      <p>์‚ฌ์ง„ ์„ค๋ช… : Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit. Ullam, numquam, Neque mollitia esse blanditils facere.</p>
    </div>
    <div class="box box7">
      <h3>์‚ฌ์ง„ ์ œ๋ชฉ</h3>
      <img src="./images/cup-7.jpg" alt="">
      <p>์‚ฌ์ง„ ์„ค๋ช… : Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit. Ullam, numquam, Neque mollitia esse blanditils facere.</p>
    </div>
    <div class="box box8">
      <h3>์‚ฌ์ง„ ์ œ๋ชฉ</h3>
      <img src="./images/cup-1.jpg" alt="">
      <p>์‚ฌ์ง„ ์„ค๋ช… : Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit. Ullam, numquam, Neque mollitia esse blanditils facere.</p>
    </div>
  </div>
</body>
</html>

๊ฐ•์‚ฌ๋‹˜ ์ฝ”๋“œ

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      box-sizing: border-box;
    }
    body {
      background-color: #eee;
    }
    #container {
      width: 700px;
      margin: 0 auto;
      display: grid;
      grid-template-columns: repeat(3, 300px);
      gap: 1rem;
    }
    .card-view {
      background-color: #fff;
      box-shadow: 1px 1px 5px #000;
      display: flex;
      flex-direction: column;
      height: 320px;
      padding: 0 24px;
    }
    .card-item-header {
      font-size: 1.5rem;
      text-align: center;
      padding: 10px 0;
    }
    .card-item-image {
      background-size: cover;
      height: 60%;
    }
    .card-item-desc {
      font-size: 0.8rem;
      padding: 10px 0;
    }
    .image-no1 {
      background-image: url(./images/cup-1.jpg);
    }
    .image-no2 {
      background-image: url(./images/cup-2.jpg);
    }
    .image-no3 {
      background-image: url(./images/cup-3.jpg);
    }
    .image-no4 {
      background-image: url(./images/cup-4.jpg);
    }
    .image-no5 {
      background-image: url(./images/cup-5.jpg);
    }
    .image-no6 {
      background-image: url(./images/cup-6.jpg);
    }
    .image-no7 {
      background-image: url(./images/cup-7.jpg);
    }
  </style>
</head>
<body>
  <div id="container">
    <div class="card-view">
      <div class="card-item-header">์‚ฌ์ง„ ์ œ๋ชฉ</div>
      <div class="card-item-image image-no1"></div>
      <div class="card-item-desc">Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit.Ullam, numquam. Neque mollitia esse blanditiis facere.</div>
    </div>
    <div class="card-view">
      <div class="card-item-header">์‚ฌ์ง„ ์ œ๋ชฉ</div>
      <div class="card-item-image image-no2"></div>
      <div class="card-item-desc">Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit.Ullam, numquam. Neque mollitia esse blanditiis facere.</div>
    </div>
    <div class="card-view">
      <div class="card-item-header">์‚ฌ์ง„ ์ œ๋ชฉ</div>
      <div class="card-item-image image-no3"></div>
      <div class="card-item-desc">Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit.Ullam, numquam. Neque mollitia esse blanditiis facere.</div>
    </div>
    <div class="card-view">
      <div class="card-item-header">์‚ฌ์ง„ ์ œ๋ชฉ</div>
      <div class="card-item-image image-no4"></div>
      <div class="card-item-desc">Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit.Ullam, numquam. Neque mollitia esse blanditiis facere.</div>
    </div>
    <div class="card-view">
      <div class="card-item-header">์‚ฌ์ง„ ์ œ๋ชฉ</div>
      <div class="card-item-image image-no5"></div>
      <div class="card-item-desc">Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit.Ullam, numquam. Neque mollitia esse blanditiis facere.</div>
    </div>
    <div class="card-view">
      <div class="card-item-header">์‚ฌ์ง„ ์ œ๋ชฉ</div>
      <div class="card-item-image image-no6"></div>
      <div class="card-item-desc">Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit.Ullam, numquam. Neque mollitia esse blanditiis facere.</div>
    </div>
    <div class="card-view">
      <div class="card-item-header">์‚ฌ์ง„ ์ œ๋ชฉ</div>
      <div class="card-item-image image-no7"></div>
      <div class="card-item-desc">Lorem ipsum dolor sit amet, consectetur 
      adipisicing elit.Ullam, numquam. Neque mollitia esse blanditiis facere.</div>
    </div>
  </div>
</body>
</html>

์ •๋ฆฌ

๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ

๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ์˜ ๊ธฐ๋ณธ ์†์„ฑ

๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ์˜ ์ •๋ ฌ ์†์„ฑ

๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ์˜ ๋ฐฐ ์†์„ฑ


๋ฐ˜์‘ํ˜• UI (?)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      box-sizing: border-box;
      margin: 0;
    }
    #container {
      margin: 20px;
      display: grid;
      grid-template-columns: repeat(5, 94px);
      grid-template-rows: repeat(3, 100px);
      gap: 10px;
    }
    .item {
      background-color: salmon;
      color: #fff;
    }
    .item:nth-child(2n) {
      background-color: orange;
    }
    .box2 {
      grid-column: 2/4;
      grid-row: 1/3;
    }
    .box3 {
      grid-column: 4/6;
    }
    .box5 {
      grid-column: 4/6;
    }
    @media (max-width:500px) {
      #container {
        width: 100%;
        grid-template-columns: repeat(3, 100px);
        grid-template-rows: repeat(5, 100px);
      }
      .box3, .box5 {
        /* columns์„ 3์œผ๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ„์น˜ ๋ณ€๊ฒฝํ•ด์ค˜์•ผ ํ•จ. 
        ๋”ฐ๋ผ์„œ ์›๋ž˜ ์œ„์น˜๋กœ ์ ์šฉ(unset)ํ•˜๋ฉด ์žฌ๋ฐฐ์น˜๋จ. */
        grid-column: unset;
      }
      .box10 {
        grid-column: 1/4;
      }
    }
  </style>
</head>
<body>
  <div id="container">
    <div class="item box1">1</div>
    <div class="item box2">2</div>
    <div class="item box3">3</div>
    <div class="item box4">4</div>
    <div class="item box5">5</div>
    <div class="item box6">6</div>
    <div class="item box7">7</div>
    <div class="item box8">8</div>
    <div class="item box9">9</div>
    <div class="item box10">10</div>
  </div>
</body>
</html>
profile

GiantStepDEV

@kongmi

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!