-
๐จ CSS 5 | ๊ทธ๋ฆฌ๋(with ๋๋ฆผ์ฝ๋ by ์จ๋ฆฌ) 1ํCSS 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; }
'CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐จ CSS 6 | ๊ทธ๋ฆฌ๋(with ๋๋ฆผ์ฝ๋ by ์จ๋ฆฌ) 2ํ (0) 2022.09.09 ๐จ CSS 4 | Flexbox (with ๋๋ฆผ์ฝ๋ by ์จ๋ฆฌ) 2ํ (0) 2022.09.05 ๐จ CSS 3 | CSS ๋จ์ ( %, em, rem, vw, vh ) (0) 2021.12.17 ๐จ CSS 2 | Flexbox (with ๋๋ฆผ์ฝ๋ by ์จ๋ฆฌ) 1ํ (0) 2021.12.17 ๐จ CSS 1 | CSS layout (display, position) (0) 2021.12.16