CSS

๐ŸŽจ CSS 5 | ๊ทธ๋ฆฌ๋“œ(with ๋“œ๋ฆผ์ฝ”๋“œ by ์•จ๋ฆฌ) 1ํƒ„

grasinnong 2022. 9. 9. 14:45

 

 

Step 1 : Grid vs Flexbox

 

CSS Layout ์„ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋กœ๋Š” Flexbox์™€ grid ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 

 

Flexbox์˜ ๊ฒฝ์šฐ ๊ฐ€๋กœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ, ์„ธ๋กœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ 1์ฐจ์›์ ์œผ๋กœ CSS ๋ ˆ์ด์•„์›ƒ์„ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๊ฐ€๋กœ๋กœ ๋ฌถ๊ฑฐ๋‚˜

์„ธ๋กœ๋กœ ๋ฌถ๊ฑฐ๋‚˜ 

 

 

Grid์˜ ๊ฒฝ์šฐ ๊ฐ€๋กœ์ถ•๊ณผ ์„ธ๋กœ์ถ•์„ ๊ธฐ์ค€์œผ๋กœ 2์ฐจ์›์ ์œผ๋กœ CSS ๋ ˆ์ด์•„์›ƒ์„ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

 

 

 

Step 2 : Grid 

 

Grid๋Š” container(๋ถ€๋ชจ)์— ์ฃผ๋Š” ์†์„ฑ๊ณผ grid cell(์ž์‹)์— ์ฃผ๋Š” ์†์„ฑ์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

 

container ์— ๊พธ๋ฉฐ์ค„ ์ˆ˜ ์žˆ๋Š” ์†์„ฑ๋“ค 

 

- display

- grid-template-columns

- grid-template-rows

- grid-template-areas

- grid-gap

 

grid cell์— ๊พธ๋ฉฐ์ค„ ์ˆ˜ ์žˆ๋Š” ์†์„ฑ๋“ค

 

- grid-column-start

- grid-column-end

- grid-row-start

- grid-row--end

- grid-area

 

 

 

index.html

<body>
  <div class="container">
    <div class="item color1">Item1</div>
    <div class="item color2">Item2</div>
    <div class="item color3">Item3</div>
    <div class="item color4">Item4</div>
    <div class="item color5">Item5</div>
    <div class="item color1">Item6</div>
    <div class="item color2">Item7</div>
    <div class="item color3">Item8</div>
    <div class="item color4">Item9</div>
    <div class="item color5">Item10</div>
  </div>
</body>

style.css

*{
      margin : 0;
      padding : 0;
      box-sizing : border-box;
    }
    body{
      width : 100vw;
      height : 100vh;
    }
    .container{
      background-color : beige;
      height: 100vh;
    }
    .item{
     display : flex;
     justify-content: center;
     align-items: center;
     border  :1px solid #181818;
     font-size :1.2rem;
     font-weight : bold;
    }
    .color1 {
        background-color: rgb(247, 114, 114);
    }
    .color2 {
        background-color: rgb(250, 134, 153);
    }
    .color3 {
        background-color: rgb(165, 100, 250);
    }
    .color4 {
        background-color: rgb(129, 103, 255);
    }
    .color5 {
        background-color: rgb(83, 178, 255);
    }

 

 

 

 

 

 

 

 

 

Step 3 : Grid ๋ถ€๋ชจ์—๊ฒŒ ์ค„ ์ˆ˜ ์žˆ๋Š” ์†์„ฑ๋“ค(container)

 

- display : grid

 

Grid ๋ ˆ์ด์•„์›ƒ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ์•Œ๋ ค์ฃผ๊ธฐ : ๋ถ€๋ชจ์ปจํ…Œ์ด๋„ˆ์— display : grid 

.container{
     background-color : beige;
      height: 100vh;
      display :grid;
}

 

grid๋ฅผ ์„ ์–ธํ•จ๊ณผ ๋™์‹œ์— ๊ฐ ์ž์‹ ์•„์ดํ…œ๋“ค์€ grid cell์ด ๋œ๋‹ค.

 

 

 

 

- grid-template-columns

 

column์— ์•„์ดํ…œ์„ ์–ด๋–ป๊ฒŒ ๋ฐฐ์น˜ํ•  ์ง€ ์ •์˜

.container{
      background-color : beige;
      height: 100vh;
      display :grid;
      /*100px์”ฉ 3๊ฐœ์˜ ์•„์ดํ…œ์„ column์— ๋ฐฐ์น˜*/
      /*repeat ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
       repeat(๋ช‡ ๋ฒˆ ๋ฐ˜๋ณต, ๊ฐ’)
      */
      grid-template-columns : 100px 100px 100px;
}

 

 

- grid-template-rows

 

rows์— ์•„์ดํ…œ์„ ์–ด๋–ป๊ฒŒ ๋ฐฐ์น˜ํ•  ์ง€ ์ •์˜

.container{
      background-color : beige;
      height: 100vh;
      display :grid;
      grid-template-columns : 100px 100px 100px;
      /*1์—ด์€ 100px, 2์—ด์€ 200px, 3์—ด์€ 300px*/
      grid-template-rows : 100px 200px 300px;
}

 

 

 

- grid-auto-rows

rows ๊ฐœ์ˆ˜์— ์ƒ๊ด€์—†์ด ์ผ๊ด„์ ์œผ๋กœ ์ ์šฉ

 

๋ชจ๋“  rows๋Š” 150px์”ฉ ์ฐจ์ง€

.container{
      background-color : beige;
      height: 100vh;
      display :grid;
      grid-template-columns : 100px 100px 100px;
      grid-auto-rows : 150px;
}

 

minmax ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด 150px์”ฉ ์ฐจ์ง€ํ•˜๋˜ ์ปจํ…์ธ ์˜ ํฌ๊ธฐ๊ฐ€ 150px์„ ๋„˜์„ ๊ฒฝ์šฐ ์ปจํ…์ธ ๋งŒํผ ํฌ๊ธฐ ์ฐจ์ง€ํ•จ. 

๋‹ค๋ฅธ rows๋Š” 150px ์ฐจ์ง€

.container{
      background-color : beige;
      height: 100vh;
      display :grid;
      grid-template-columns : 100px 100px 100px;
      grid-auto-rows : minmax(150px, auto);
}

 

 

- grid-column-gap

column๋“ค ์‚ฌ์ด gap ์ง€์ • 

 

.container{
      background-color : beige;
      height: 100vh;
      display :grid;
      grid-template-columns : 100px 100px 100px;
      grid-auto-rows : minmax(150px, auto);
      grid-column-gap : 10px;
}

 

 

 

- grid- row-gap

row๋“ค ์‚ฌ์ด gap ์ง€์ • 

.container{
      background-color : beige;
      height: 100vh;
      display :grid;
      grid-template-columns : 100px 100px 100px;
      grid-auto-rows : minmax(150px, auto);
      grid-row-gap : 10px;
}

 

 

 

- grid-gap

row, column gap ๋™์‹œ ์ง€์ • 

.container{
      background-color : beige;
      height: 100vh;
      display :grid;
      grid-template-columns : 100px 100px 100px;
      grid-auto-rows : minmax(150px, auto);
      grid-gap : 10px;
}