๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

html, css

CSS Grid ์ •๋ฆฌ

 

์ฐธ๊ณ  ์ž๋ฃŒ 

https://youtu.be/nxi1EXmPHRs 

 

๊ทธ ์™ธ์— ์ถ”๊ฐ€๋กœ ํ™•์ธํ•˜๋ฉด ์ข‹์€ ๋ธ”๋กœ๊ทธ

https://studiomeal.com/archives/533 

https://nykim.work/59 

 

 

grid์˜ ์†์„ฑ ์ •๋ฆฌ

 

 

<head>
    <style>
        *{
            box-sizing: border-box;
        }
        body{
            width: 100vw;
            height: 100vh;
            margin: 0;
        }
        .item{
            display:flex;
            justify-content: center;
            align-items: center;
            border:1px solid #181818;
            font-weight: 900;
            font-size:1.2rem;
        }
        .item1{
            background-color: #fff8d9;
        }
        .item2{
            background-color: #dfffd9;
        }
        .item3{
            background-color: #d9feff;
        }
        .item4{
            background-color: #dcd9ff;
        }
        .item5{
            background-color: #ffd9e1;
        }
        .container{
            display : grid;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="item item1">item1</div>
        <div class="item item2">item2</div>
        <div class="item item3">item3</div>
        <div class="item item4">item4</div>
        <div class="item item5">item5</div>
        <div class="item item1">item6</div>
        <div class="item item2">item7</div>
        <div class="item item3">item8</div>
        <div class="item item4">item9</div>
        <div class="item item5">item10</div>
    </div>
</body>

 

์ด ์ฝ”๋“œ ๋‚ด์—์„œ ๋Œ€์ถฉ ์šฉ์–ด๋“ค์„ ์ •๋ฆฌํ•˜์ž๋ฉด,

 

 

Grid Container

<div class=”container”></div>, grid์˜ ์ „์ฒด ์˜์—ญ

Grid Item

Grid Container์˜ ์ž์‹ ์š”์†Œ๋“ค๋กœ, <div class=”item”></div>

Grid Track

Grid์˜ Row๋‚˜ Column

Grid Cel

Grid ํ•œ ์นธ์„ ์˜๋ฏธํ•˜๋ฉฐ, Item์€ ์‹ค์ œ html <div> ํƒœ๊ทธ ์š”์†Œ๋ฅผ, Cell์€ item ํ•˜๋‚˜๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ฐ€์ƒ์˜ ์นธ(?)

Grid Line

Grid Cell์„ ๊ตฌ๋ถ„ํ•˜๋Š” ์„ 

Grid Number

Grid Line์˜ ๊ฐ ๋ฒˆํ˜ธ

Grid Gap

Grid Cell  ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ

Grid Area

Grid Line์„ ๋‘˜๋Ÿฌ์‹ผ ์‚ฌ๊ฐํ˜• ์˜์—ญ, Grid Cell์˜ ์ง‘ํ•ฉ

 

 

์šฐ์„  ๊ธฐ๋ณธ ์„ธํŒ…์„ ์ด์™€ ๊ฐ™์ด ํ•ด๋‘”๋‹ค.

 

 

display:grid๋งŒ ์„ค์ •ํ•˜๋ฉด ์ฒ˜์Œ์—๋Š” ๋งˆ์น˜ block์„ ์‚ฌ์šฉํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์—ฌ์ง„๋‹ค.

 

 


Grid ๋ถ€๋ชจ ๊ด€์  ์†์„ฑ


 

 

๋จผ์ €, Grid Track์˜ ํฌ๊ธฐ๋“ค์„ ์ง€์ •ํ•ด์ฃผ๋Š” ์†์„ฑ grid-template-columns์™€ grid-template-rows์— ๊ฐ’์„ ์ง€์ •ํ–ˆ๋‹ค. 

 

.container{
    display:grid;
    /* grid-template-columns: 100px 100px 100px 100px 100px; */
    grid-template-columns: repeat(5, 100px);
    /* 100px 100px 100px 100px 100px๋ฅผ repeat(5, 100px)๋กœ ๊ฐ„๋‹จํžˆ ๋ฐ”๊ฟ” ์“ธ ์ˆ˜ ์žˆ๋‹ค. */
    grid-template-rows: 100px 200px repeat(2, 100px);
}

 

์ด๋ ‡๊ฒŒ ์ •์ ์ธ px ๊ฐ’์ด ์•„๋‹Œ ๋ฐ˜์‘ํ˜•์œผ๋กœ ์ง€์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

 

.container{
    display:grid;
    grid-template-columns: repeat(5, 20%);
    /*๋˜๋Š” grid-template-columns: repeat(5, 1fr) ๋กœ ์ง€์ •ํ•ด๋„ ๋œ๋‹ค.*/
    grid-auto-rows : 150px; /* ์ž๋™์œผ๋กœ ํ–‰์˜ ๋†’์ด๋ฅผ 150px๋กœ ๋งž์ถฐ์คŒ */
}

 

๋ฐ˜์‘ํ˜•์œผ๋กœ ์ง€์ •ํ–ˆ์„ ๋•Œ.

 

grid-template-columns: 1fr 2fr 1fr;

 

์ด ๋•Œ grid-auto-rows : 150px; ์˜ ์ฝ”๋“œ๋Š” cell ๋‚ด๋ถ€ ๋‚ด์šฉ์ด ๋„ˆ๋ฌด ๋งŽ์•„ ๋„˜์น˜๊ฒŒ ๋˜๋ฉด ์ž˜๋ ค์„œ ๋ณด์ด์ง€ ์•Š๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋ฅผ ์œ ๋™์ ์œผ๋กœ ์•Œ์•„์„œ ๋งž์ถฐ์ฃผ๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

 

.container{
    display:grid;
    grid-template-columns: 1fr 2fr 1fr;
    grid-auto-rows : minmax(150px, auto);
}

 

minmax() ํ•จ์ˆ˜ ์‚ฌ์šฉ์ „ / ์‚ฌ์šฉํ›„

 

๊ฐ cell ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์„ ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

grid-gap์œผ๋กœ row์™€ column ๋ชจ๋‘์—๊ฒŒ ์„ค์ •์„ ํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, grid-column-gap ์ด๋‚˜ grid-row-gap์œผ๋กœ ๋‘˜ ์ค‘ ํ•˜๋‚˜์—๋งŒ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

.container{
    display:grid;
    grid-template-columns: repeat(5, 1fr);
    grid-auto-rows : 150px;
    grid-gap : 10px;
}

 

 


Grid ์ž์‹ ๊ด€์  ์†์„ฑ


 

์ด๋ฒˆ์—๋Š” ๊ฐ ์…€์˜ ์˜์—ญ์„ ์ง€์ •ํ•  ๊ฒƒ์ด๋‹ค.

 

grid line์„ count ํ•˜๋Š” ๋ฐฉ๋ฒ•, 

 

 

<div class="container">
    <div class="item item1">item1</div>
    <div class="item item2 grid2">item2</div>
    <div class="item item3">item3</div>
    <div class="item item4">item4</div>
    <div class="item item5">item5</div>
    <div class="item item1">item6</div>
    <div class="item item2">item7</div>
    <div class="item item3">item8</div>
    <div class="item item4">item9</div>
    <div class="item item5">item10</div>
</div>

 

๋ณ€ํ™”๋ฅผ ์ฃผ๊ธฐ ์œ„ํ•ด grid2 ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

 

grid ํด๋ž˜์Šค๋Š” ์ง€๊ธˆ column 2๋ฒˆ๊ณผ 3๋ฒˆ ์‚ฌ์ด์— ๊ปด์žˆ๋Š” ์…ˆ์ด ๋œ๋‹ค.

์ด ๋•Œ ์ด column์„ ์œ„์— ์žˆ๋Š” ์šฐ์ธก ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ 5๋ฒˆ๊นŒ์ง€ ํ™•์žฅ์‹œํ‚ค๊ณ  ์‹ถ๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. 

 

.grid2 {
    grid-column-start : 2;
    grid-column-end : 5;
}

 

row๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค.

1๋ฒˆ๋ถ€ํ„ฐ 2๋ฒˆ๊นŒ์ง€ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” row๋ฅผ 1๋ฒˆ๋ถ€ํ„ฐ 3๋ฒˆ๊นŒ์ง€๋กœ ๋Š˜๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

.grid2 {
    grid-column-start : 2;
    grid-column-end : 5;
    grid-row-start: 1;
    grid-row-end: 3;
}

 

 

์ด ๋•Œ ์œ„์˜ 4์ค„์˜ ์ฝ”๋“œ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ 2์ค„๋กœ ๋ฐ”๊ฟ€ ์ˆ˜๊ฐ€ ์žˆ๋‹ค. 

 

.grid2 {
    grid-column : 2/5;
    /* ๋˜๋Š” grid-column: 2 / span 3; ์„ ์ž‘์„ฑํ•˜์—ฌ ์„ธ ์นธ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค*/
    /* grid-colum: 2/-1; ์€ -1(์ฆ‰ ๋งจ ๋งˆ์ง€๋ง‰ ์ค„)๊นŒ์ง€ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.*/
    grid-row: 1/3;
}

 

 


Grid Areas


 

์ด๋ฒˆ์—” ์ด๋ฏธ์ง€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์…”์„œ ๊ทธ๋ƒฅ ์˜ˆ์ œ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉฐ ํ™•์ธํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

css-study > css-grid-main > video_code > image.html, image.css ํ™•์ธ 

 

 

์ง€๊ธˆ์€ ๋ฒŒ์จ ์ƒˆ๋ฒฝ 2์‹œ๊ฐ€ ๋‹ค ๋์œผ๋ฏ€๋กœ... ๋‚ด์ผ ํ•œ๋ฒˆ grid๋ฅผ ์ด์šฉํ•ด ๊ฐ„๋‹จํ•œ ์›นํŽ˜์ด์ง€ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ ์ƒ๊ฐ์ด๋‹ค.