TIL

[TIL] CSS Flex, Grid 문제

thegreatjy 2023. 10. 15. 18:31
728x90

Flex, Grid 문제

  1. 07/selfcheck/ing/self1.html 파일을 사용해 다음과 같은 플렉스 박스 레이아웃을 만들어 보세요.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .flex-container{
            display: flex;
            flex-wrap: wrap;
            width: 500px;
            justify-content: space-between;
        }
        .flex-item{
            width: 30%;
            height: 240px;
            margin-bottom: 10px;
        }
    </style>
</head>
<body>
    <div class="flex-container">
        <div class="flex-item"><img src="./images/1.jpg" alt=""></div>
        <div class="flex-item"><img src="./images/2.jpg" alt=""></div>
        <div class="flex-item"><img src="./images/3.jpg" alt=""></div>
        <div class="flex-item"><img src="./images/4.jpg" alt=""></div>
        <div class="flex-item"><img src="./images/5.jpg" alt=""></div>
        <div class="flex-item"><img src="./images/6.jpg" alt=""></div>
    </div>
</body>
</html>
  1. 07/selfcheck/ing/self2.html 파일을 사용해 다음과 같은 그리드 박스 레이아웃을 만들어 보세요.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .grid-container{
            display: grid;
            width: 500px;
            grid-template-rows: 100px 100px 100px;
            grid-template-columns: 1fr 1fr 1fr 1fr 1fr; /* fr : 비율 fraction */
            grid-gap: 10px;
        }
        .grid-item{
            background-color: hotpink;
        }
        .grid-item:nth-child(2n){
            background-color: mediumvioletred;
        }

        .item2{
            grid-column: 2/4;
            grid-row: 1/3;
        }
        .item3, .item5{
            grid-column: 4/6;
        }
    </style>
</head>
<body>
    <div class="grid-container">
        <div class="grid-item item1">1</div>
        <div class="grid-item item2">2</div>
        <div class="grid-item item3">3</div>
        <div class="grid-item item4">4</div>
        <div class="grid-item item5">5</div>
        <div class="grid-item item6">6</div>
        <div class="grid-item item7">7</div>
        <div class="grid-item item8">8</div>
        <div class="grid-item item9">9</div>
        <div class="grid-item item10">10</div>
    </div>
</body>
</html>
  1. 2번 문제의 정답 코드를 이용해 해상도가 500px 이하일 때만 다음처럼 보이게 만들어 보세요.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .grid-container {
        display: grid;
        width: 500px;
        grid-template-rows: 100px 100px 100px;
        grid-template-columns: 1fr 1fr 1fr 1fr 1fr; /* fr : 비율 fraction */
        grid-gap: 10px;
      }
      .grid-item {
        width: 100%;
        background-color: hotpink;
      }
      .grid-item:nth-child(2n) {
        background-color: mediumvioletred;
      }

      .item2 {
        grid-column: 2/4;
        grid-row: 1/3;
      }
      .item3,
      .item5 {
        grid-column: 4/6;
      }

      /* 화면 너비가 500px이하인 경우 */
      @media (max-width: 500px) {
        .grid-container {
          display: grid;
          width: 100%;
          grid-template-rows: 100px 100px 100px 100px 100px;
          grid-template-columns: 1fr 1fr 1fr; /* fr : 비율 fraction */
          grid-gap: 10px;
        }
        .item3,
        .item5 {
          grid-column: unset;
        }
        .item10 {
          grid-column: 1/4;
        }
      }
    </style>
  </head>
  <body>
    <div class="grid-container">
      <div class="grid-item item1">1</div>
      <div class="grid-item item2">2</div>
      <div class="grid-item item3">3</div>
      <div class="grid-item item4">4</div>
      <div class="grid-item item5">5</div>
      <div class="grid-item item6">6</div>
      <div class="grid-item item7">7</div>
      <div class="grid-item item8">8</div>
      <div class="grid-item item9">9</div>
      <div class="grid-item item10">10</div>
    </div>
  </body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .large_square{
            background-color: yellow;
            width: 300px;
            height: 200px;
            position: relative;
            border-color: black;
            border-width: 1px;
            border-style: solid;
            left: 16%;
        }
        .square{
            background-color: blue;
            position: relative;
            left: 50%;
            top: 20%;
            width: 50px;
            height: 50px;
            border-color: black;
            border-width: 1px;
            border-style: solid;
        }
        .circle{
            background-color: red;
            position: relative;
            left: 60%;
            top: 10%;
            width: 50px;
            height: 50px;
            border-color: black;
            border-width: 1px;
            border-style: solid;
            border-radius: 50%;
        }

        .flex-container{
            display: flex;
            flex-wrap: wrap;
            width: 600px;
            position: relative;
            color: white;
            top: 10px;
        }
        .flex-item{
            background-color: cornflowerblue;
            width: 20%;
        }
        .flex-item:nth-child(2n){
            background-color: darkblue;
        }
        .flex-item:nth-child(1){
            width: 25%;
        }
        .flex-item:nth-child(2){
            width: 50%;
        }
        .flex-item:nth-child(3){
            width: 12.5%;
        }
        .flex-item:nth-child(4){
            width: 12.5%;
        }

        .grid-container{
            display: grid;
            grid-template-rows: repeat(4, 25fr);
            grid-template-columns: repeat(4, 25fr);
            position: relative;
            top: 20px;
            width: 600px;
            height: 600px;
        }
        .grid-item{
            border-style: solid;
            border-width: 1px;
            border-color: white;
            position: relative;
            width: 100%;
            height: 100%;
            background-image: url(./images/gridExample3/1.jpg);
            color: white;
        }
        .grid-item:nth-child(2n){
            background-image: url(./images/gridExample3/2.jpg);
        }

        .itemA{
            grid-row: 1/4;
            vertical-align: text-bottom;
        }
        .itemB{
            grid-column: 2/5;
        }
        .itemC{
            grid-row: 2/4;
        }
        .itemF{
            grid-row: 2/5;
            grid-column: 4/5;
        }
        .itemG{
            grid-column: 1/4;
        }

        .vcenter{
            display: flex;
            align-items: center;
        }
        .vbottom{
            display: flex;
            align-items:end;
        }
    </style>
</head>
<body>
    <div class="large_square">
        <div class="square"></div>
        <div class="circle"></div>
    </div>

    <div class="flex-container">
        <div class="flex-item">A</div>
        <div class="flex-item">B</div>
        <div class="flex-item">C</div>
        <div class="flex-item">D</div>
    </div>

    <div class="grid-container">
        <div class="grid-item itemA vcenter">A</div>
        <div class="grid-item itemB vcenter">B</div>
        <div class="grid-item itemC vcenter">C</div>
        <div class="grid-item itemD vbottom">D</div>
        <div class="grid-item itemE vbottom">E</div>
        <div class="grid-item itemF">F</div>
        <div class="grid-item itemG">G</div>
    </div>

</body>
</html>
728x90