align-items
justify-content
μ μμ§μΆ λ°©ν₯ μ λ ¬ .container {
display: flex;
align-items: stretch;
/* align-items: flex-start; */
/* align-items: flex-end; */
/* align-items: center; */
/* align-items: baseline; */
}
stretch | κΈ°λ³Έκ°, μμ΄ν λ€μ΄ μμ§μΆ λ°©ν₯μ λκΉμ§ μμ± λμ΄λ¨ |
flex-start | μμ΄ν
μ μμμ μ μ λ ¬ flex-directionμ΄ row(κ°λ‘ λ°°μΉ)μΌ λλ μ, column(μΈλ‘ λ°°μΉ)μΌ λλ μΌμͺ½ |
flex-end | μμ΄ν
μ λμ μ μ λ ¬ flex-directionμ΄ row(κ°λ‘ λ°°μΉ)μΌ λλ μλ, column(μΈλ‘ λ°°μΉ)μΌ λλ μ€λ₯Έμͺ½ |
center | μμ΄ν μ κ°μ΄λ°λ‘ μ λ ¬ |
baseline | μμ΄ν λ€μ ν μ€νΈ λ² μ΄μ€λΌμΈ κΈ°μ€μΌλ‘ μ λ ¬ |
align-content
flex-wrap: wrap
μ΄ μ€μ λ μνμμ μμ΄ν
λ€μ νμ΄ 2μ€ μ΄μμΌ κ²½μ°, μμ§μΆ λ°©ν₯ μ λ ¬justify-content
.container {
display: flex;
align-items: stretch;
/* align-contetn: flex-start; */
/* align-contetn: flex-end; */
/* align-contetn: center; */
/* align-contetn: space-between; */
/* align-contetn: space-around; */
/* align-contetn: space-evenly; */
}
align-self
align-items
μ μμ΄ν
λ²μ align-items
κ° μ 체 μμ΄μ³μ μμ§μΆ λ°©ν₯ μ λ ¬μ΄λΌλ©΄, align-self
λ ν΄λΉ μμ΄ν
μ μμ§μΆ μ λ ¬align-self
λ align-items
λ³΄λ€ μ°μ μμκ° λλ€. .item {
align-self: auto;
/* align-self: stretch; */
/* align-self: flex-start; */
/* align-self: flex-end; */
/* align-self: center; */
/* align-self: baseline; */
}
auto | κΈ°λ³Έκ°, align-items μ€μ μ μμ λ°μ |
flex-wrap
.container {
display: flex;
flex-wrap: nowrap;
/* flex-wrap: wrap; */
/* flex-wrap: wrap-reverse; */
}
nowrap | κΈ°λ³Έκ°, μ€λ°κΏμ νμ§ μμ λμΉλ©΄ μμ Έ λκ°λ€. |
wrap | μ€λ°κΏμ νλ€. float μ΄λ inline-bloxkμΌλ‘ λ°°μΉν μμλ€κ³Ό λΉμ·νκ² λμ |
wrap-reverse | μ€λ°κΏμ νλλ°, μμ΄ν μ μμ λ°°μΉ |
flex-flow
flex-direction
κ³Ό flex-wrap
μ νκΊΌλ²μ μ§μ ν μ μλ λ¨μΆ μμ± .container {
display: flex;
flex-flow: row wrap;
/* flex-direction: row; */
/* flex-wrap: wrap; */
}
flex-basis
flex-direction: row
μΌ λλ λλΉ, flex-direction: column
μΌ λλ λμ΄ μ€μ .item {
flex-basis: auto;
/* flex-basis: 0; */
/* flex-basis: 50%; */
/* flex-basis: 300px; */
/* flex-basis: 10rem; */
/* flex-basis: content; */
}
auto | κΈ°λ³Έκ°, ν΄λΉ μμ΄ν
μ width κ° μ¬μ© widthλ₯Ό μ€μ νμ§ μμμ κ²½μ° μ½ν μΈ μ ν¬κΈ° |
content | μ½ν
μΈ μ ν¬κΈ° widthλ₯Ό μ€μ νμ§ μμ κ²κ³Ό κ°μ |
flex-grow
flex-basis
μ κ°λ³΄λ€ μ»€μ§ μ μλμ§λ₯Ό κ²°μ νλ μμ±flex-shrink
flex-grow
μ μμΌλ‘ μ΄λ£¨λ μμ±, μμ΄ν
μ΄ flex-basis
μ κ°λ³΄λ€ μμμ§ μ μλμ§λ₯Ό κ²°μ νλ μμ±flex
flex-grow
, flex-shrink
, flex-basis
λ₯Ό ν λ²μ μΈ μ μλ μΆμ½ν μμ± .item {
flex: 1;
/* flex-grow: 1; flex-shrink: 1; flex-basis: 0; */
flex: 1 1 auto;
/* flex-grow: 1; flex-shrink: 1; flex-basis: auto; */
flex: 1 500px;
/* flex-grow: 1; flex-shrink: 1; flex-basis: 500px; */
}
- μ£Όμν μ
flex-basis
λ₯Ό μλ΅ν΄μ μ¬μ©νλ©΄,flex-basis
μ κ°μ 0μ΄ λλ€.
μ)flex: 1;
order
.item:nth-child(1) { order: 3; }
.item:nth-child(2) { order: 1; }
.item:nth-child(3) { order: 2; }
float
μ μ΄μ©ν΄μ λ§λ λ μ΄μμμ flex
λ₯Ό μ΄μ©ν΄ λ§λ€κΈ°
flex
μ°Έκ³ μ¬μ΄νΈ
1λΆ μ½λ© - μ΄λ²μμΌλ§λ‘ CSS Flexλ₯Ό μ΅ν보μ
Flexbox playground
flex
μ°μ΅ μ¬μ΄νΈ
Flexbox Froggy
A Complete Guide to Flexbox
flex
vs grid
?flex
: ν λ°©ν₯ λ μ΄μμ μμ€ν
(1μ°¨μ)grid
: λ λ°©ν₯(κ°λ‘-μΈλ‘) λ μ΄μμ μμ€ν
(2μ°¨μ) <div class="container">
<div class="item">A</div>
<div class="item">B</div>
<div class="item">C</div>
<div class="item">D</div>
<div class="item">E</div>
<div class="item">F</div>
<div class="item">G</div>
<div class="item">H</div>
<div class="item">I</div>
</div>
div.container
λ₯Ό grid-container
, μμ μμμΈ div.item
μ grid-item
μ΄λΌκ³ λΆλ₯Έλ€.grid
μ μν₯μ λ°λ μ 체 곡κ°, μ€μ λ μμ±μ λ°λΌ κ°κ°μ μμ΄ν
λ€μ΄ μ΄λ€ ννλ‘ λ°°μΉλλ κ² .container {
display: grid;
/* display: inline-grid; */
}
[μΆμ²: 1λΆ μ½λ©]
grid container | grid μ μ 체 μμgrid container μμ μμλ€(=grid item )μ΄ grid κ·μΉμ μν₯μ λ°μ μ λ ¬ |
grid item | grid container μ μμ μμ |
grid track | grid μ ν(row) λλ μ΄(column) |
grid cell | grid μ ν μΉΈ |
grid line | grid cell μ ꡬλΆνλ μ |
grid number | grid line μ κ° λ²νΈ |
grid gap | grid cell μ¬μ΄μ κ°κ²© |
grid area | grid line μΌλ‘ λλ¬μΈμΈ μ¬κ°ν μμ, grid cell μ μ§ν© |
grid-template-columns
/ grid-template-rows
grid track
μ ν¬κΈ°λ€μ μ§μ ν΄μ£Όλ μμ±grid-template-columns
: μ΄μ λ°°μΉ, μ΄μ λμ΄ μ€μ grid-template-rows
: νμ λ°°μΉ, νμ λμ΄ μ€μ .container {
grid-template-columns: 200px 200px 500px;
/* grid-template-columns: 1fr 1fr 1fr */
/* grid-template-columns: repeat(3, 1fr) */
/* grid-template-columns: 200px 1fr */
/* grid-template-columns: 100px 200px auto */
grid-template-rows: 200px 200px 500px;
/* grid-template-rows: 1fr 1fr 1fr */
/* grid-template-rows: repeat(3, 1fr) */
/* grid-template-rows: 200px 1fr */
/* grid-template-rows: 100px 200px auto */
}
- fr(fraction) : μ«μ λΉμ¨λλ‘ νΈλμ ν¬κΈ°λ₯Ό λλλ λ¨μ
1fr 1fr 1fr
= κ· μΌνκ² 1:1:1 λΉμ¨μΈ 3κ°μ columnμ λ§λ¦
repeat
ν¨μ : repeat(λ°λ³΅νμ, λ°λ³΅κ°)
1fr 1fr 1fr
=repeat(3, 1fr)
row-gap
/ column-gap
/ gap
.container {
row-gap: 10px;
/* rowμ κ°κ²©μ 10pxλ‘ */
column-gap: 20px;
/* columnμ κ°κ²©μ 20pxλ‘ */
gap: 10px 20px;
/* row-gap: 10px; colum-gap: 20px; */
}
grid-column-start
: column μμ λ²νΈgrid-column-end
: column λ λ²νΈgrid-column
: μμ λ μμ± μΆμ½νgrid-row-start
: row μμ λ²νΈgrid-row-end
: row λ λ²νΈgrid-row
: μμ λ μμ± μΆμ½ν[μΆμ²: 1λΆ μ½λ©]
.item:nth-child(1) {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 1;
grid-row-end: 2;
}
/* μμ λμΌν μ½λ */
.item:nth-child(1) {
grid-column: 1 / 3;
grid-row: 1 / 2;
}
/* μμ λμΌν μ½λ */
/* span: λͺ κ°μ μ
μ μ°¨μ§ν κ² μΈμ§ μ§μ */
.item:nth-child(1) {
grid-column: 1 / span 2;
grid-row: 1 / span 1;
}
<!DOCTYPE html>
<html lang="ko">
<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>grid - μ€μ΅</title>
<link rel="stylesheet" href="reset.css" />
<style>
body {
display: flex;
align-items: center;
justify-content: center;
min-height: 100vh;
}
.container {
display: grid;
grid-template-columns: repeat(5, 100px);
grid-template-rows: repeat(5, 100px);
gap: 10px;
}
.item img {
width: 100%;
height: 100%;
object-fit: cover;
}
.item1 {
grid-column: 1 / 4;
grid-row: 1 / 3;
}
.item2 {
grid-column: 4 / 6;
grid-row: 1 / 4;
}
.item3 {
grid-column: 1 / 3;
}
.item5 {
grid-column: 1 / 3;
grid-row: 4 / 6;
}
.item6 {
grid-column: 3 / 6;
grid-row: 4 / 6;
}
</style>
</head>
<body>
<div class="container">
<div class="item item1"><img src="img_grid/1.jpg" alt="" /></div>
<div class="item item2"><img src="img_grid/6.jpg" alt="" /></div>
<div class="item item3"><img src="img_grid/2.jpg" alt="" /></div>
<div class="item item4"><img src="img_grid/5.webp" alt="" /></div>
<div class="item item5"><img src="img_grid/3.webp" alt="" /></div>
<div class="item item6"><img src="img_grid/4.jpg" alt="" /></div>
</div>
</body>
</html>
grid
μ°Έκ³ μ¬μ΄νΈ
1λΆ μ½λ© - μ΄λ²μμΌλ§λ‘ CSS Gridλ₯Ό μ΅ν보μ
09:00 - 12:00 | μ€μ μμ |
12:00 - 13:00 | μ μ¬ μμ¬ |
13:00 - 18:00 | μ€ν μμ |
18:00 - 19:00 | μ λ μμ¬ |
19:00 - 21:00 | μ€νλ¦°νΈ νκ³ ! |
grid
! λ§μ μ€μ΅ν΄λ³΄λ©΄ μκ°λ³΄λ€ μ΄λ ΅μ§ μκ² νλλ° κΈλ‘ μ ν μ€λͺ
λ§ λ³΄λ©΄ λ μμ΄ κΉκΉν΄μ§λ€.