Header

๐Ÿ˜‰ ํ—ท๊ฐˆ๋ ธ๋˜ & ๋ชฐ๋ž๋˜ ๋ถ€๋ถ„๋“ค๋งŒ ์ •๋ฆฌํ•˜๋Š” ๋‚˜๋งŒ์˜ TIL
๐Ÿ˜ฏ ๋ชจ๋“  ๊ฐ•์˜ ๋‚ด์šฉ์€ ์ ์ง€ ์•Š์•„์š”!

์˜ค๋Š˜์˜ ์†Œ๊ฐ์€?
๊ฒ‰ํ•ฅ๊ธฐ ์‹์œผ๋กœ ์•Œ๊ณ  ์žˆ์—ˆ๋˜ Grid์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ ์ˆ˜ ์žˆ์–ด ์ข‹์•˜์Šต๋‹ˆ๋‹ค.
ํŠนํžˆ auto-fit, auto-fill์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ˜์‘ํ˜• ์›น๊นŒ์ง€ ์งค ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์š”!๐Ÿ˜ฏ
๋…ธ์…˜ ํด๋กœ๋‹ ํ”„๋กœ์ ํŠธ ๋ฆฌํŒฉํ† ๋ง์— ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‘๊ทผ๋‘๊ทผ

CSS ์žฌ๋ฏธ์žˆ์–ด์„œ ์ •๋ฆฌํ•˜๋Š” ๋‚ด์šฉ์ด ์ ์  ๊ธธ์–ด์ง€๋Š” ๊ฒƒ ๊ฐ™์•„์š”..




[1] CSS Grid

Grid๋Š” 2์ฐจ์› ๋ ˆ์ด์•„์›ƒ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” CSS ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ถ•์„ ์‚ฌ์šฉํ•ด์„œ ๋ ˆ์ด์•„์›ƒ์„ ์งค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



[1-1] Grid Container

display: grid๊ฐ€ ๋ถ€์—ฌ๋œ ๋ถ€๋ชจ ์š”์†Œ๊ฐ€ ๋ฐ”๋กœ Grid Container์ž…๋‹ˆ๋‹ค.

๋ณดํ†ต grid๋Š” 3๊ฐ€์ง€ ๊ฐ’์„ ๊ธฐ๋ณธ์œผ๋กœ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

.container {
  display: grid;
  grid-template-rows: 100px 100px;
  grid-template-columns: 200px 200px 200px;
}

display๋Š” grid์™€ inline-grid๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,

rows๋Š” ์„ธ๋กœ ์นธ์˜ ๊ฐฏ์ˆ˜์™€ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋ฉฐ, columns๋Š” ๊ฐ€๋กœ ์นธ์˜ ๊ฐฏ์ˆ˜์™€ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.


px๋กœ ๋œ ํŠน์ •ํ•œ ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ, ํ™”๋ฉด ๋น„์œจ๋กœ rows์™€ columns์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ fraction ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

.container {
  display: grid;
  grid-template-rows: 1fr 1fr;
  grid-template-columns: 1fr 1fr 1fr;
}

์ด fraction ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ํ™”๋ฉด ๋น„์œจ์— ๋งž์ถฐ ๊ทธ๋ฆฌ๋“œ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.


๋˜ํ•œ fraction ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” grid ํ•จ์ˆ˜ repeat๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

grid-template-columns: 1fr 1fr 1fr;
grid-template-columns: repeat(3, 1fr); /* ๊ฐ™์€ ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. */

๋‹จ fraction ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” container์˜ ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


[1] auto-rows/ auto-columns

grid-template-rows์™€ grid-template-columns๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์ง€๋งŒ,

์ง€์ •์ด ๋˜์ง€ ์•Š๋Š” ํ•˜์œ„ ์š”์†Œ๋“ค์— ์ž๋™์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ”๋กœ grid-auto-rows / grid-auto-columns์ž…๋‹ˆ๋‹ค.


template๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •ํ•ด์ค€ ํ–‰๊ณผ ์—ด์˜ ํฌ๊ธฐ๊ฐ€ 5, 6๋ฒˆ์— ์ง€์ •์ด ๋˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.

Untitled

์ด๋•Œ grid-auto-rows๋‚˜ grid-auto-columns๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋‚˜๋จธ์ง€ ์š”์†Œ์— ํ•ด๋‹น ํฌ๊ธฐ๊ฐ€ ์ง€์ •๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Untitled 1

grid-template- : ๋ช…์‹œ์  ํฌ๊ธฐ(๋น„์œจ)
grid-auto- : ์•”์‹œ์  ํฌ๊ธฐ(๋น„์œจ)


[2] grid-auto-flow

ํ•ด๋‹น ์†์„ฑ์€ ์–ด๋–ป๊ฒŒ grid cell๋“ค์˜ flow๊ฐ€ ํ˜๋Ÿฌ๊ฐˆ ๊ฒƒ์ธ์ง€ (๋ฐฐ์น˜๋  ๊ฒƒ์ธ์ง€) ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • row : row ๋ฐฉํ–ฅ์œผ๋กœ ์Œ“์ž…๋‹ˆ๋‹ค. (default)
  • column : column ๋ฐฉํ–ฅ์œผ๋กœ ์Œ“์ž…๋‹ˆ๋‹ค.
  • dense : ๋นˆ ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๋ฉด ๊ทธ ๊ณต๊ฐ„์— ์š”์†Œ๋“ค์„ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • column dense: column์ถ•์œผ๋กœ ์Œ“์ด๋Š” ๋นˆ ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๋ฉด ์š”์†Œ๋“ค์„ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • row dense : row์ถ•์œผ๋กœ ์Œ“์ด๋Š” ๋นˆ ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๋ฉด ์š”์†Œ๋“ค์„ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.


[3] justify-content / align-content

ํ•ด๋‹น ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ถ€๋ชจ ์š”์†Œ์˜ ์—ฌ๋ฐฑ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Flex๋Š” ์ถ•์ด 1๊ฐœ๋ผ๋ฉด, grid๋Š” ์ถ•์ด 2๊ฐœ์ด๋ฏ€๋กœ justify(ํ–‰์ถ•)์™€ align(์—ด์ถ•)์„ ๋‘˜๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋ถ€๋ชจ ์š”์†Œ ๋‚ด๋ถ€ grid์˜ ์œ„์น˜๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • normal : flex์˜ stretch์™€ ๊ฐ™์€ ๊ฐœ๋…์œผ๋กœ, ์•„์ดํ…œ์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ถ€๋ชจ ์ปจํ…Œ์ด๋„ˆ์— ๋งž์ถฐ ์•„์ดํ…œ๋“ค์ด ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค. (default)
  • space-between : ์‹œ์ž‘์ ๊ณผ ๋์ ์— ๋ถ™์–ด ๋‚˜๋จธ์ง€ ๊ณต๊ฐ„์„ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•ฉ๋‹ˆ๋‹ค.
  • space-around : ๊ฐ ์—ด(ํ–‰)์˜ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ์—ฌ๋ฐฑ์„ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•ฉ๋‹ˆ๋‹ค.
  • space-evenly : ํ–‰(์—ด) ์ถ• ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์—ฌ๋ฐฑ์„ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•ฉ๋‹ˆ๋‹ค.


[4] justify-items / align-items

ํ•ด๋‹น ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ Cell ๋‚ด ์—ฌ๋ฐฑ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ Cell ๋‚ด๋ถ€ item์˜ ์œ„์น˜๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • normal : ์•„์ดํ…œ์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฐ cell์˜ ํฌ๊ธฐ์— ๋งž์ถฐ ์•„์ดํ…œ์ด ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค.
  • center : ํ–‰(์—ด)์ถ•์˜ ๊ฐ€์šด๋ฐ ์ •๋ ฌ์ด ๋ฉ๋‹ˆ๋‹ค.
  • start : ํ–‰(์—ด)์ถ•์˜ ์‹œ์ž‘์ ์œผ๋กœ ์ •๋ ฌ์ด ๋ฉ๋‹ˆ๋‹ค.
  • end : ํ–‰(์—ด)์ถ•์˜ ๋์ ์œผ๋กœ ์ •๋ ฌ์ด ๋ฉ๋‹ˆ๋‹ค.


[5] grid-template-areas

grid-template-areas๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, grid-area ์ด๋ฆ„์„ ์ง€์ •ํ•ด์ค€ ๊ตฌ์—ญ์œผ๋กœ ์ง์ ‘ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.container {
  border: 4px solid;
  display: grid;
  grid-template-rows: repeat(4, 100px);
  grid-template-columns: repeat(3, 1fr);
  grid-template-areas:
    "header header header"
    "main main aside"
    ". . aside" /* ๋งˆ์นจํ‘œ(๋นˆ ๋ถ€๋ถ„) ๋Œ€์‹  none์„ ์ž…๋ ฅํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. */
    "footer footer footer"; /* ๋ ˆ์ด์•„์›ƒ์„ ์ง์ ‘ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. */
}

.container > * {
  border: 2px solid;
}
.container header {
  grid-area: header;
}
.container main {
  grid-area: main;
}
.container aside {
  grid-area: aside;
}
.container footer {
  grid-area: footer;
}

Untitled 2


์ด๋•Œ ๊ทธ๋ฆฌ๋“œ ์‚ฌ์ด์˜ gab(Gutter)์„ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

grid-gap: 10px 10px; /* ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ์ž‘์„ฑํ•ด๋„ ๋˜๊ณ , ํ–‰๊ณผ ์—ด์„ ๋”ฐ๋กœ ์ง€์ •ํ•ด์ค„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. */
grid-row-gap: 10px; /* ๊ฐœ๋ณ„ ์†์„ฑ์œผ๋กœ๋„ ์ ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. */
grid-column-gap: 10px;



[1-2] Grid Items

display: grid๊ฐ€ ๋ถ€์—ฌ๋œ ๋ถ€๋ชจ ์š”์†Œ ๋ฐ‘์—, ๋“ค์–ด์žˆ๋Š” item๋“ค์ด ๋ฐ”๋กœ ๋ฐ”๋กœ Grid items์ž…๋‹ˆ๋‹ค.

grid๋กœ ์„ค์ •๋œ container๋Š” cell ์˜์—ญ์„ ๊ฐ€์ง€๊ฒŒ ๋˜๊ณ , ํ•ด๋‹น cell๋“ค์€ line์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

Untitled 3

๋”ฐ๋ผ์„œ ํ•ด๋‹น item๋“ค์„ ์–ด๋–ค line์—์„œ ์‹œ์ž‘ํ•˜๊ณ  ์–ด๋–ค line์—์„œ ๋๋‚˜๋Š”์ง€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


[1] row/column-start/end

grid-row(column)-start๋Š” ์–ด๋–ค ๋ผ์ธ์—์„œ ์•„์ดํ…œ์ด ์‹œ์ž‘๋  ๊ฒƒ์ธ์ง€,

grid-row(column)-end๋Š” ์–ด๋–ค ๋ผ์ธ๊นŒ์ง€ ์ฑ„์šธ ๊ฒƒ์ธ์ง€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋˜ํ•œ start์™€ row๋Š” ์ค„์—ฌ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.container .item:nth-child(1) {
  grid-column: 1 / 4; /* start์™€ end */
}

ํ•ด๋‹น ์†์„ฑ์€ line์˜ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์–ผ๋งˆ๋‚˜ ์ฑ„์šธ ๊ฒƒ์ธ์ง€ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.container .item:nth-child(1) {
  grid-row-start: span 2; /* span ํ‚ค์›Œ๋“œ๋Š” ํ™•์žฅ์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. */
}

Untitled 4

span 2 ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋ฉด, 2๋งŒํผ ๋Š˜๋ฆฌ๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ start, end๋ฅผ ๋”ฐ๋กœ ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ grid๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


[2] justify/align-self

๊ฐœ๋ณ„์ ์œผ๋กœ cell ๋‚ด์—์„œ์˜ item ์ •๋ ฌ์„ ํ•ธ๋“ค๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†์„ฑ์€ justify/align-items์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

.container .item:nth-child(1) {
  justify-self: center;
  align-self: end;
}

Untitled 5

[3] order

order๋Š” Flex์—์„œ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๊ฐ™์ด ์ •๋ ฌ ์ˆœ์„œ๋ฅผ ํ•ธ๋“ค๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’์€ 0์—์„œ ์‹œ์ž‘ํ•˜๋ฉฐ, ์ˆซ์ž๊ฐ€ ์ž‘์œผ๋ฉด ์ž‘์„์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์•„์ง‘๋‹ˆ๋‹ค.

๋ฐ˜๋Œ€๋กœ ์ปค์ง€๋ฉด ๋’ค์ชฝ์œผ๋กœ ๋ฐ€๋ ค๋‚˜๊ฒ ์ฃ .

.container .item:nth-child(1) {
  order: 1;
}

.container .item:nth-child(3) {
  order: -1;
}

Untitled 6


[4] z-index

CSS์˜ ์Œ“์ž„ ๋งฅ๋ฝ๊ณผ ์—ฐ๊ด€๋˜๋Š” ๋‚ด์šฉ์œผ๋กœ, ์š”์†Œ๊ฐ€ ๊ฒน์ณค์„ ๋•Œ, ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Œ“์ž„ ๋งฅ๋ฝ MDN ๋ฌธ์„œ

์š”์†Œ์˜ position์ด๋ผ๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ flex, grid๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์Œ“์ž„ ์ˆœ์„œ๋ฅผ ํ•ธ๋“ค๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฐ ๊ฐ’์ผ์ˆ˜๋ก ์œ„์ชฝ์— ์Œ“์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.



[1-3] Grid Functions

[1] minmax()

grid-template-columns(rows)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’์„ ์ง€์ •ํ•ด์ฃผ๋ฉด, ๋ถˆํ•„์š”ํ•œ ์—ฌ๋ฐฑ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿด ๋•Œ ํฌ๊ธฐ์˜ ์ตœ์†Œ, ์ตœ๋Œ€๊ฐ’์„ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” minmax() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

grid-template-columns: minmax(100px, 1fr) minmax(200px, 1fr);
/* ์ตœ์†Œ, ์ตœ๋Œ€๊ฐ’์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. */

ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ๋ช…์‹œ์ ์ธ ํฌ๊ธฐ ๋ฟ๋งŒ ์•„๋‹Œ, ์•”์‹œ์ ์ธ ํฌ๊ธฐ (grid-auto-rows/columns)๋ฅผ ์ง€์ •ํ•  ๋•Œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


[2] fit-content()

grid item์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” content ๋„ˆ๋น„์— ๋งž์ถฐ์ฃผ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

fit-content(100px)๋กœ ์ตœ๋Œ“๊ฐ’์„ ๋ช…์‹œํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



[1-4] Grid Unit

grid์—์„œ ํŒ๋‹จํ•˜๋Š” ๋‹จ์œ„๋Š” ํ•œ๊ธ€๊ณผ ์˜๋ฌธ์ด ์กฐ๊ธˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

Untitled 7

ํ•œ๊ธ€์˜ ๊ฒฝ์šฐ, ํ•œ ๊ธ€์ž ํ•œ ๊ธ€์ž๊ฐ€ ๋‹จ์œ„๋กœ ํŒ๋‹จ๋˜๋ฉฐ

์˜๋ฌธ์˜ ๊ฒฝ์šฐ, ๋„์–ด์“ฐ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹จ์œ„๊ฐ€ ํŒ๋‹จ๋ฉ๋‹ˆ๋‹ค.


min-content๋ฅผ ์ด์šฉํ•˜๋ฉด ์ตœ์†Œํ•œ์˜ ๋„ˆ๋น„๋กœ ์—ด(ํ–‰)์˜ ๋„ˆ๋น„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ๋‹จ์–ด ๋‹จ์œ„๋กœ ํŒŒ์•…๋˜๊ธฐ์—, ์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ํ•œ๊ธ€๊ณผ ์˜๋ฌธ์˜ ์ฐจ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•œ๊ธ€์˜ ๊ฒฝ์šฐ ํ•œ ๊ธ€์ž๊ฐ€ ๋‹จ์œ„๋กœ ํŒ๋‹จ๋˜์–ด ๋ชจ๋“  ๊ธ€์ž๊ฐ€ ์ค„๋ฐ”๊ฟˆ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Untitled 8


max-content๋ฅผ ์ด์šฉํ•˜๋ฉด ์ตœ๋Œ€ํ•œ์˜ ๋„ˆ๋น„๋กœ ์—ด(ํ–‰)์˜ ๋„ˆ๋น„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Untitled 9


[1] word-break

word-break๋Š” ์ค„๋ฐ”๊ฟˆ์˜ ๊ธฐ์ค€์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

word-break MDN ๋ฌธ์„œ

์ด๋Š” ํ•œ๊ธ€๋„ ๋„์–ด์“ฐ๊ธฐ ๋‹จ์œ„๋กœ ์ค„๋ฐ”๊ฟˆ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

.container {
  border: 4px solid;
  display: grid;
  grid-template-rows: 100px;
  grid-template-columns: repeat(4, min-content);
}

ํ•ด๋‹น ์˜ˆ์‹œ์ฒ˜๋Ÿผ min-content๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ, ํ•œ๊ธ€์ด ํ•œ ๊ธ€์ž ๋‹จ์œ„๋กœ ์ค„๋ฐ”๊ฟˆ์ด ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.container .item {
  border: 2px solid;
  font-size: 30px;
  word-break: keep-all;
}

Untitled 10


  • normal : ๊ธฐ๋ณธ ์ค„ ๋ฐ”๊ฟˆ ๊ทœ์น™์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (default)
  • keep-all : ์˜์–ด ๋ฟ๋งŒ ์•„๋‹Œ ํ•œ๊ธ€๋„ ๋„์–ด์“ฐ๊ธฐ ๋‹จ์œ„๋กœ ๋‹จ์–ด๋ฅผ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.
  • break-all : ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋– ํ•œ ๋‘ ๋ฌธ์ž ์‚ฌ์ด์—๋„ ์ค„ ๋ฐ”๊ฟˆ์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.


[2] auto-fill/ auto-fit

repeatํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.

๋ช‡๊ฐœ์˜ ์—ด๊ณผ ํ–‰์„ ์‚ฌ์šฉํ• ๊ฑด์ง€ ๋ช…์‹œํ•˜์ง€ ์•Š์•„๋„, ์ž๋™์œผ๋กœ ๋‹จ์œ„๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.


  • auto-fit

์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€์˜ ๋„ˆ๋น„๋ฅผ ์šฐ์„ ํ•ด์„œ ๋‹จ์œ„๋ฅผ ์ •ํ•ด์ค๋‹ˆ๋‹ค.

.container {
  border: 4px solid;
  display: grid;
  grid-template-rows: 100px;
  grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
}

Untitled 11

Untitled 12


  • auto-fill

์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๋„ˆ๋น„๋ฅผ ์šฐ์„ ํ•ด์„œ ๋‹จ์œ„๋ฅผ ์ •ํ•ด์ค๋‹ˆ๋‹ค.

.container {
  border: 4px solid;
  display: grid;
  grid-template-rows: 100px;
  grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
}

Untitled 13

minmax ํ•จ์ˆ˜ ๋‚ด ์ตœ์†Œ๊ฐ’์„ 100px๋กœ ์ง€์ •ํ–ˆ์œผ๋ฏ€๋กœ ๊ฐ cell์€ 100px๊ฐ€ ๋˜๋ฉฐ

container์˜ ๋นˆ ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.





์ถœ์ฒ˜

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์นดํ…Œ๊ณ ๋ฆฌ: ,

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ