๐จ CSS ๐ป
Grid
output7
2022. 1. 17. 16:47
Grid
- ๊ฒฉ์๋ฅผ ๋ง๋๋ ๋ ์ด์์์
- ๋ถ๋ชจ<div>์ display : grid๋ฅผ ์ฃผ๋ฉด ์์ <div>๋ค์ ์ ๋ถ ๊ฒฉ์์ฒ๋ผ ์ง์ด๋จ
- grid-template-columns๋ ๊ฐ๋ก ๊ฒฉ์์ ๊ฐ์์
- grid-template-rows๋ ์ธ๋ก ๊ฒฉ์์ ๊ฐ์์
- fr: ๋ช๋ฐฐ๋งํผ ์ฐจ์งํ ์ง๋ฅผ ๋ํ๋ด๋ ๊ฐ์
- grid-gap: ๊ทธ๋ฆฌ๋ ์ฌ์ด ๊ฐ๊ฒฉ์ ์ค
- grid-template-rows์์ fr๋จ์๋ฅผ ์ค ๋๋ height๊ฐ์ ์ค์ ํด์ค์ผ ํจ
- ํฐ ๋ ์ด์์์ ์ก์ ๋๋ณด๋ค ์์ํ ๋ถ๋ถ์์ ์์
๊ฐ์ ๊ฒฉ์๊ฐ ํ์ํ ๋ ์ฐ๋ฉด ํจ๊ณผ์ ์
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
grid-template-rows: 100px 100px 100px;
grid-gap: 10px;
}
Grid๋ก ๋ ์ด์์ ๋ง๋๋ ๋ฒ 1
- ์ง์ ์์์๊ฒ ๋ช ์นธ์ ์ฐจ์งํ ์ง๋ฅผ ์ ํด์ฃผ๋ ๋ฐฉ๋ฒ
- grid-column: ์ธ๋ก์ค ์ฐจ์งํ ๊ฐ์๋ฅผ ์ง์ ํด์ค
- grid-row: ๊ฐ๋ก์ค ์ฐจ์งํ ๊ฐ์๋ฅผ ์ง์ ํด์ค
.grid-nav {
grid-column : 1 / 4;
grid-row : 2 / 4;
}
grid-column : 1 / 4 (์ธ๋ก์ค ๋งจ ์ 1๋ฒ์ค๋ถํฐ ๋ง์ง๋ง ์ค์ธ 4๋ฒ๊น์ง ์ฐจ์งํจ) |
||
grid-row : 2 / 5 (๊ฐ๋ก ๋๋ฒ ์งธ ์ค๋ถํฐ ๋ง์ง๋ง ์ค 5๋ฒ๊น์ง ์ฐจ์งํจ) |
||
๋๋ณด๊ธฐ
HTML
<!DOCTYPE html>
<html lang="en">
<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>
<link rel="stylesheet" href="style.css" />
<script src="./index.js" defer></script>
</head>
<body>
<div class="grid-container">
<div class="grid-nav"></div>
<div class="grid-sidebar"></div>
<div class="grid-main"></div>
</div>
</body>
</html>
CSS
.grid-container {
display: grid;
height: 600px;
grid-template-columns: 1fr 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
}
.grid-nav {
grid-column: 1 / 5;
background-color: #7950f2;
}
.grid-sidebar {
grid-row: 2 / 4;
background-color: #212529;
}
.grid-main {
grid-column: 2 / 5;
grid-row: 2 / 4;
background-color: #ffec99;
}
@media screen and (max-width:576px) {
.grid-sidebar {
grid-column: 1 / 5;
grid-row: 2 / 3;
}
.grid-main {
grid-column: 1 / 5;
grid-row: 3 / 4;
}
}
Grid๋ก ๋ ์ด์์ ๋ง๋๋ ๋ฒ 2
- ์์์ ์ด๋ฆ์ ์จ๋๊ณ ๋ถ๋ชจ๊ฐ ์์์ ์์ ๋กญ๊ฒ ๋ฐฐ์นํ ์ ์์
- grid-area๋ผ๋ ์์ฑ์ ์ด์ฉํด ์์์๊ฒ ์ด๋ฆ์ ๋ถ์ฌ์ค
- grid-template-areas: ์์์ค์ 'ํค๋'๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ์ ๊ฐ ์๋ค๋ฉด ์ฒซ ํ์ 4์นธ์ ์ฐจ์งํ๊ฒ ํด์ค
- ๊ณต๊ฐ์ ๋น์๋๋ ค๋ฉด .์ ์ฐ์ผ๋ฉด ๋จ
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
grid-template-rows: 100px 100px 100px;
grid-gap: 10px;
grid-template-areas:
"ํค๋ ํค๋ ํค๋ ํค๋"
"์ฌ์ด๋ ์ฌ์ด๋ . ."
"์ฌ์ด๋ ์ฌ์ด๋ . ."
}
.grid-nav {
grid-area: ํค๋;
}
.grid-sidebar {
grid-area: ์ฌ์ด๋;
}
๋๋ณด๊ธฐ
HTML
<!DOCTYPE html>
<html lang="en">
<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>
<link rel="stylesheet" href="style.css" />
<script src="./index.js" defer></script>
</head>
<div class="grid-container2">
<div class="any"><img src="https://placeimg.com/500/500/any" /></div>
<div class="arch"><img src="https://placeimg.com/500/500/arch" /></div>
<div class="nature"><img src="https://placeimg.com/500/500/nature" /></div>
<div class="people1"><img src="https://placeimg.com/500/500/people" /></div>
<div class="tech"><img src="https://placeimg.com/500/500/tech" /></div>
<div class="people2"><img src="https://placeimg.com/600/600/people" /></div>
</div>
</body>
</html>
CSS
.grid-container2 {
display: grid;
height: 600px;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
grid-template-areas:
"any any arch"
"any any nature"
"people1 tech people2"
;
}
img {
width: 100%;
display: block;
}
.any {
grid-area: any;
}
.arch {
grid-area: arch;
}
.nature {
grid-area: nature;
}
.people1 {
grid-area: people1;
}
.tech {
grid-area: tech;
}
.people2 {
grid-area: people2;
}
@media screen and (max-width: 768px) {
.grid-container2 {
grid-template-columns: 1fr;
grid-template-rows: auto;
grid-template-areas:
"any"
"arch"
"nature"
"people1"
"tech"
"people2"
;
}
}
Grid ๋ ์ด์์ ํธํ์ฑ
- IE์์๋ ๋ถ๊ฐ๋ฅํ๊ณ Edge ํฌํจ ๊ธฐํ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ๊ฐ๋ฅํ ์์ฑ์ด๋ผ ๋ณด๋ฉด ๋จ