[2023.03.03] 8. CSS Box Model

2023. 3. 3. 20:56ใ†Dev./CSS

๐Ÿ”CSS Box Model์— ๋Œ€ํ•ด ์ •๋ฆฌ!

 

CSS Box Model

  • HTML ์š”์†Œ๋ฅผ ๊ฐ์‹ธ๋Š” ์ƒ์ž
    • ์š”์†Œ, ํŒจ๋”ฉ, ํ…Œ๋‘๋ฆฌ, ๋งˆ์ง„์œผ๋กœ ๊ตฌ์„ฑ๋จ
    • ์š”์†Œ: ํ…์ŠคํŠธ, ์‚ฌ์ง„ ๋“ฑ ๋ณด์—ฌ์ค„ ๋Œ€์ƒ
    • ํŒจ๋”ฉ: ์š”์†Œ ์ฃผ๋ณ€ ์˜์—ญ์„ ๊ฐ์‹ผ๋‹ค.
    • ํ…Œ๋‘๋ฆฌ: ์š”์†Œ์™€ ํŒจ๋”ฉ์„ ๊ฐ์‹ธ๋Š” ํ…Œ๋‘๋ฆฌ
    • ๋งˆ์ง„: ํ…Œ๋‘๋ฆฌ ๋ฐ–์˜ ์˜์—ญ์„ ๊ฐ์‹ผ๋‹ค.

[์ถœ์ฒ˜ : ์œ„๋‹ˆ๋ธŒ(Weniv)]

  • CSS Box Model์€ ๋ธ”๋ก ๋ฐ•์Šค์— ์ ์šฉ๋˜๋ฉฐ, ์ธ๋ผ์ธ ๋ฐ•์Šค๋Š” ์ผ๋ถ€ ๋™์ž‘๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.
    inline ์š”์†Œ๋Š” width, height, ์ƒํ•˜ margin ๊ฐ’ ์ ์šฉ X

 

width

  • ์š”์†Œ์˜ ๋„ˆ๋น„
  • ๊ธฐ๋ณธ๊ฐ’์€ ์ฝ˜ํ…์ธ  ์˜์—ญ์˜ ๋„ˆ๋น„์ง€๋งŒ box-sizing ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ๋‘๋ฆฌ ์˜์—ญ์˜ ๋„ˆ๋น„๋ฅผ ์„ค์ •
    • auto: ๊ธฐ๋ณธ๊ฐ’. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ณ„์‚ฐํ•˜์—ฌ ์ง€์ •
    • min-content: ์ตœ์†Œ ๋„ˆ๋น„
    • max-content: ์ปจํ…์ธ  ๋‚ด์šฉ์˜ ์„ ํ˜ธ ๋„ˆ๋น„
    • fit-content: ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์„ ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉํ•˜์ง€๋งŒ max-content ๋ณด๋‹ค๋Š” ์ž‘์€ ๋„ˆ๋น„

 

 

height

  • ์š”์†Œ์˜ ๋†’์ด
    • auto: ๊ธฐ๋ณธ๊ฐ’. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ณ„์‚ฐํ•˜์—ฌ ์ง€์ •(์š”์†Œ์˜ ์ž์‹ ๊ธฐ์ค€์œผ๋กœ ์กฐ์ ˆ)

padding

  • ๋‹จ์ถ• ์†์„ฑ
  • padding-top padding-right padding-bottom padding-left ์ˆœ์œผ๋กœ ์ž‘์„ฑ (์‹œ๊ณ„ ๋ฐฉํ–ฅ)
p {
	padding: 10px; /* top, right, bottom, left ๋ชจ๋‘ 10px */
	padding: 10px 20px; /* top, bottom :10px,  left, right:20px */
	padding: 10px 20px 30px; /* top:10px, left,right:20px, bottom:30px */
	padding: 10px 20px 30px 40px;
}

 

margin

  • ๋‹จ์ถ• ์†์„ฑ
  • margin-top margin-right margin-bottom margin-left ์ˆœ์œผ๋กœ ์ž‘์„ฑ (์‹œ๊ณ„ ๋ฐฉํ–ฅ)
/* ๊ฐ€์šด๋ฐ ๋ฐฐ์น˜ */
p{
	width: 400px;
	margin: auto; 
}

/* ์˜ค๋ฅธ์ชฝ ๋ฐฐ์น˜ */
p{
	width: 400px;
	margin: auto 0 auto auto;
}
  • margin auto๋Š” ์ˆ˜ํ‰ ์ •๋ ฌ์„ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ˆ˜์ง ์ •๋ ฌ์„ ์ ์šฉํ•  ์ˆ˜๋Š” ์—†๋‹ค.

๐Ÿค”๋งˆ์ง„๋ณ‘ํ•ฉ ํ˜„์ƒ (Margin Collapsing)

์š”์†Œ์™€ ์š”์†Œ ์‚ฌ์ด์— ๋งˆ์ง„ ๊ณต๊ฐ„์ด ์žˆ์œผ๋ฉด ๋” ๋†’์€ ๊ฐ’์˜ ๋งˆ์ง„๊ฐ’ ์ ์šฉ [์ถœ์ฒ˜ : ์œ„๋‹ˆ๋ธŒ(Weniv)]
์ž์‹ ์š”์†Œ์˜ ๋งˆ์ง„๊ฐ’์ด ๋ถ€๋ชจ์˜ ๋†’์ด์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ํ˜„์ƒ[์ถœ์ฒ˜ : ์œ„๋‹ˆ๋ธŒ(Weniv)]

 

 ๐Ÿ’ก๋งˆ์ง„๋ณ‘ํ•ฉ ํ˜„์ƒ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

  • ๋ถ€๋ชจ ์š”์†Œ์— overflow ์†์„ฑ ๊ฐ’์„ ์ ์šฉ.
  • ๋ถ€๋ชจ ์š”์†Œ์— display: inline-block ๊ฐ’์„ ์ ์šฉ.
  • ๋ถ€๋ชจ ์š”์†Œ์— border ๊ฐ’์„ ์ ์šฉ.
  • ๋ถ€๋ชจ ์š”์†Œ์— display:flow-root์„ ์‚ฌ์šฉ. (IE ์ง€์› ๋ถˆ๊ฐ€)

    ๋งˆ์ง„๋ณ‘ํ•ฉ ํ˜„์ƒ์„ ๊ตณ์ด ํ•ด๊ฒฐํ•  ํ•„์š”๋Š” ์—†๋‹ค! ์ด ํ˜„์ƒ์„ ์•Œ๊ณ  ์žˆ๋Š” ์ƒํƒœ๋กœ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

 

border

  • ํ…Œ๋‘๋ฆฌ ์ง€์ •
  • ํ…Œ๋‘๋ฆฌ๋Š” ์š”์†Œ๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ์ „์ฒด ๋„ˆ๋น„, ๋†’์ด์˜ ์ผ๋ถ€
  • ๋‹จ์ถ•์†์„ฑ
  • ์„ ์˜ ๋‘๊ป˜, ์Šคํƒ€์ผ, ์ƒ‰์ƒ์„ ์ง€์ •
  • border-width border-style border-color

 

border-radius

  • ์ƒ์ž์˜ ๋ชจ์„œ๋ฆฌ๋ฅผ ๋‘ฅ๊ธ€๊ฒŒ ์ฒ˜๋ฆฌ
  • ๋‹จ์ถ• ์†์„ฑ
  • boder-top-left-radius border-top-right-radius border-bottom-right-radius border-bottom-left-radius
    ์ˆœ์„œ๋กœ ์ž‘์„ฑ(์‹œ๊ณ„ ๋ฐฉํ–ฅ)

See the Pen Untitled by astinaus (@astinaus) on CodePen.

box-sizing

  • content-box: ๊ธฐ๋ณธ๊ฐ’. width, height์— border, padding ํฌํ•จ X
  • border-box: width, height์— border, padding ํฌํ•จ.
    • width = ์ฝ˜ํ…์ธ  ๋„ˆ๋น„ + border + padding

overflow, overflow-x, overflow-y

  • ๋ฐ•์Šค๋ณด๋‹ค ์ฝ˜ํ…์ธ ๊ฐ€ ๋” ์ปค์„œ ์ฝ˜ํ…์ธ ๊ฐ€ ๋„˜์น  ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ• ์ง€์ •
    • visible: ๊ธฐ๋ณธ๊ฐ’. ๋ฐ•์Šค๋ฅผ ๋„˜๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ
    • hidden: ์š”์†Œ์˜ ํฌ๊ธฐ๋งŒํผ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ์ž˜๋ผ๋ƒ„. ์Šคํฌ๋กค๋ฐ” X
    • scroll: ์š”์†Œ์˜ ํฌ๊ธฐ๋งŒํผ ์ž˜๋ผ๋‚ด๊ณ  ์Šคํฌ๋กค๋ฐ” O
    • auto: ์ž๋™์œผ๋กœ ์ฝ˜ํ…์ธ ๊ฐ€ ๋„˜์น  ๊ฒฝ์šฐ ์Šคํฌ๋กค๋ฐ” ๋…ธ์ถœ

background

  • ๋‹จ์ถ• ์†์„ฑ
  • background-attachment
    • fixed: ๋ทฐํฌํŠธ์— ๊ณ ์ •
    • local: ์š”์†Œ ์ฝ˜ํ…์ธ ์— ๋Œ€ํ•ด ๊ณ ์ •. ์Šคํฌ๋กค์ด ์กด์žฌํ•˜๋ฉด ๋ฐฐ๊ฒฝ์€ ์ฝ˜ํ…์ธ ์™€ ํ•จ๊ป˜ ์Šคํฌ๋กค.
    • scroll: ๋ฐฐ๊ฒฝ ์š”์†Œ ์ž์ฒด์— ๋Œ€ํ•ด ๊ณ ์ •. ์š”์†Œ์— ์Šคํฌ๋กค์ด ์กด์žฌํ•ด๋„ ๋ฐฐ๊ฒฝ์€ ํ•จ๊ป˜ ์Šคํฌ๋กค ๋˜์ง€ ์•Š์Œ.
  • background-clip: ์š”์†Œ์˜ ๋ฐฐ๊ฒฝ์ด ํ…Œ๋‘๋ฆฌ, ์•ˆ์ชฝ ์—ฌ๋ฐฑ, ์ฝ˜ํ…์ธ  ์ƒ์ž ์ค‘ ์–ด๋””๊นŒ์ง€ ์ฐจ์ง€ํ• ์ง€ ์ง€์ •
    • border-box
    • padding-box
    • content-box
  • background-color: ๋ฐฐ๊ฒฝ ์ƒ‰์ƒ ์„ค์ •
  • background-image: ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€ ์„ค์ •
  • background-origin: ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€ ๋ฐฐ์น˜ ๊ธฐ์ค€ ์กฐ์ ˆ
  • background-position: ๋ฐฐ๊ฒฝ์˜ ์œ„์น˜๋ฅผ ์„ค์ •
  • background-repeat: ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐ˜๋ณตํ•  ๊ฒƒ์ธ์ง€ ์„ค์ •.
    • repeat: ๋ฐ˜๋ณต
    • no-repeat : ๋ฐ˜๋ณตํ•˜์ง€ ์•Š์Œ
    • repeat-x : x์ถ•์œผ๋กœ๋งŒ ๋ฐ˜๋ณต
    • repeat-y: y์ถ•์œผ๋กœ๋งŒ ๋ฐ˜๋ณต
  • background-size
    • contain : ์ด๋ฏธ์ง€๊ฐ€ ์ž˜๋ฆฌ๊ฑฐ๋‚˜ ์ฐŒ๊ทธ๋Ÿฌ์ง€์ง€ ์•Š๋Š” ํ•œ๋„ ๋‚ด์—์„œ ์ œ์ผ ํฌ๊ฒŒ ์„ค์ •. ์—ฌ๋ฐฑ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • cover : ์ด๋ฏธ์ง€๊ฐ€ ์ฐŒ๊ทธ๋Ÿฌ์ง€์ง€ ์•Š๋Š” ํ•œ๋„ ๋‚ด์—์„œ ์ œ์ผ ํฌ๊ฒŒ ์„ค์ •. ์ด๋ฏธ์ง€์˜ ๊ฐ€๋กœ์„ธ๋กœ๋น„๊ฐ€ ์š”์†Œ์™€ ๋‹ค๋ฅด๋‹ค๋ฉด ์ด๋ฏธ์ง€๋ฅผ ์„ธ๋กœ ๋ฐฉํ–ฅ ๋˜๋Š” ๊ฐ€๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ์ž˜๋ผ๋‚ด์–ด ์—ฌ๋ฐฑ์ด ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

box-shadow

  • ๊ทธ๋ฆผ์ž ํšจ๊ณผ๋ฅผ ์ถ”๊ฐ€
  • offset-x offset-y blur-radius spread-radius color ์ˆœ์„œ๋กœ ์ž‘์„ฑ

 

opacity

  • ๋ถˆํˆฌ๋ช…๋„๋ฅผ ์„ค์ •
  • 0 - 1 ์‚ฌ์ด์˜ ์ˆซ์ž๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. (0: ํˆฌ๋ช…, 1: ๋ถˆํˆฌ๋ช…)