Visual Studio Code/Visual Studio Code icia 33일차

Visual Studio Code Grid에 대해서

swkn 2023. 4. 7. 18:42

1. 기본 그리드

<!DOCTYPE html>
<html lang="ko">
  <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-1</title>
  </head>
  <style>
    .container {
      display: grid;
      grid-template-columns: auto auto auto auto;
    }
    .item {
      background-color: orange;
      border: 1px solid red;
      width: 300px;
      height: 300px;
    }
  </style>
  <body>
    <div class="container">
      <div class="item">div1</div>
      <div class="item">div2</div>
      <div class="item">div3</div>
      <div class="item">div4</div>
      <div class="item">div5</div>
      <div class="item">div6</div>
      <div class="item">div7</div>
      <div class="item">div8</div>
    </div>
  </body>
</html>

만약 그리드를 적용하려면 그 상위 부모에 그리드를 적용해야 한다.

본문에서는 item 클래스가 container에 속해있기 때문에 container에 display를 grid로 지정했다.

grid-template-columns에 auto auto auto auto를 줬는데 한 줄에 몇 개를 표현할지 설정하는 것이다.

본문에서는 4개씩 나오게 된다.

 

 

2. 응용 1

<!DOCTYPE html>
<html lang="ko">
  <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-1</title>
  </head>
  <style>
    .container {
      display: grid;
      /* 한줄에 몇개씩 배치할 것인가 */
      grid-template-columns: auto auto auto;
      column-gap: 10px;
      row-gap: 10px;
      /* gap: 10px */
    }
    .item {
      background-color: orange;
      border: 1px solid red;
    }

    .item1 {
      grid-column-start: 1;
      grid-column-end: 3;
      /* grid-column: 1/3; */
    }

    .item2 {
      grid-column-start: 3;
      grid-row-start: 1;
      grid-row-end: 3;
      /* grid-row 1/3; */
    }
    .item5 {
      grid-row-start: 3;
      grid-row-end: 5;
    }
  </style>
  <body>
    <div class="container">
      <div class="item item1">div1</div>
      <div class="item item2">div2</div>
      <div class="item item3">div3</div>
      <div class="item item4">div4</div>
      <div class="item item5">div5</div>
      <div class="item item6">div6</div>
      <div class="item item7">div7</div>
      <div class="item item8">div8</div>
    </div>
  </body>
</html>

grid-column-start , end와

grid-row-start , end로 각 그리드의 객체를 늘릴 수 있다.

각 숫자의 자리가 이렇다고 볼 수 있다.

그렇다면 본문처럼 div1를 가로를 1부터 시작해서 3까지 닿게 만들고

div2를 가로를 3부터 시작 ( 원래 위치도 3이므로 변동 없음) , 세로를 1에서 3까지 늘리고

div5의 세로를 3부터 늘려서 5까지 닿게 만든다면

위와같이 유동적으로 쓸 수 있다.

 

3. 응용 2

<!DOCTYPE html>
<html lang="ko">
  <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>
  </head>
  <body>
    <div class="header" style="background-color: gray">
      <h2>header 영역</h2>
    </div>
    <div class="container">
      <div class="column div1" style="background-color: dodgerblue">
        첫번째 영역
      </div>
      <div class="column div2" style="background-color: tomato">
        두번째 영역
      </div>
      <div class="column div3" style="background-color: violet">
        세번째 영역
      </div>
    </div>
    <div class="footer" style="background-color: aquamarine">
      <h2>foot 영역</h2>
    </div>
  </body>
</html>

header영역, container의 column div1, 2 , 3을 만들어 각각 첫 번째 영역, 두 번째 영역, 세 번째 영역을 지정하고

footer의 foot영역을 지정했다.

  <style>
    .container {
      display: grid;
      grid-template-columns: 1fr 1fr 1fr;
      text-align: center;
      height: auto;
    }
    .column {
      height: auto;
    }
    .div1 {
    }
  </style>

container 속성에 grid를 입히고 1fr를 3번썼는데 , 즉 각 항목마다 33%의 가로지분을 가지게 되는 것이다.