3. Boxbox Sizing

box-sizing ์„ค์ •

box-sizing์€ CSS์˜ ์†์„ฑ ์ค‘ ํ•˜๋‚˜๋กœ, ๋ฐ•์Šค ๋ชจ๋ธ(box model)์—์„œ ์š”์†Œ์˜ ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•œ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ CSS์˜ ๋ฐ•์Šค ๋ชจ๋ธ์€ ์š”์†Œ์˜ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•  ๋•Œ ์š”์†Œ์˜ ์ฝ˜ํ…์ธ ,

  • ์•ˆ์ชฝ ์—ฌ๋ฐฑ(padding)

  • ํ…Œ๋‘๋ฆฌ(border)

  • ๋ฐ”๊นฅ ์—ฌ๋ฐฑ(margin)

์„ ๊ณ ๋ คํ•œ๋‹ค.

box-sizing ์†์„ฑ์€ ์ด๋Ÿฌํ•œ ํฌ๊ธฐ ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ณ , ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

content-box

๊ธฐ๋ณธ๊ฐ’์œผ๋กœ, ์š”์†Œ์˜ ํฌ๊ธฐ๋ฅผ ์ฝ˜ํ…์ธ ์˜ ํฌ๊ธฐ์—๋งŒ ์ ์šฉํ•œ๋‹ค.

์ฆ‰, ํŒจ๋”ฉ(padding)๊ณผ ํ…Œ๋‘๋ฆฌ(border)๋Š” ์š”์†Œ์˜ ํฌ๊ธฐ์— ์ถ”๊ฐ€๋œ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ์š”์†Œ์˜ ์‹ค์ œ ํฌ๊ธฐ๋Š” ์ฝ˜ํ…์ธ  ์˜์—ญ์˜ ํฌ๊ธฐ์—๋งŒ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

border-box

์š”์†Œ์˜ ํฌ๊ธฐ๋ฅผ ์ฝ˜ํ…์ธ , ์•ˆ์ชฝ ์—ฌ๋ฐฑ, ํ…Œ๋‘๋ฆฌ๋ฅผ ํฌํ•จํ•œ ํฌ๊ธฐ๋กœ ์ ์šฉํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์š”์†Œ์˜ ํฌ๊ธฐ์— ํŒจ๋”ฉ๊ณผ ํ…Œ๋‘๋ฆฌ๊ฐ€ ํฌํ•จ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค์ •์€ ๋ ˆ์ด์•„์›ƒ์„ ์ž‘์„ฑํ•  ๋•Œ ํŽธ๋ฆฌํ•˜๋ฉฐ, ์š”์†Œ์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•  ๋•Œ ํ…Œ๋‘๋ฆฌ์™€ ์•ˆ์ชฝ ์—ฌ๋ฐฑ์„ ๊ณ ๋ คํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง„๋‹ค.

์‹ค์Šต with border-box

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="index.css" />
    <title>Document</title>
  </head>
  <body>
    <div class="div1">div1</div>
    <div class="div2">div2</div>
    <div class="div3">div3</div>
  </body>
</html>
* {
  box-sizing: border-box; /* content-box ์ด ๋ถ€๋ถ„๋งŒ ๋ฐ”๊ฟ”์„œ ํ…Œ์ŠคํŠธ */
}

div {
  padding: 10px;
  margin: 10px;
}

.div1 {
  width: 200px;
  height: 40px;
  background-color: lightblue;
}

.div2 {
  width: 200px;
  height: 40px;
  background-color: lightcoral;
}

.div3 {
  width: 200px;
  height: 40px;
  background-color: lightcyan;
}

content-box ๋ฅผ ์ ์šฉํ•œ ๋ชจ์Šต

์•„๋ž˜์˜ ์—ฐ๋‘์ƒ‰์œผ๋กœ ๋ณด์ด๋Š” ๋ถ€๋ถ„์ด content ์˜ ํฌ๊ธฐ์ด๋‹ค.

์œ„ ์•„๋ž˜, ์™ผ์ชฝ ์˜ค๋ฅธ์ชฝ์œผ๋กœ padding ์„ 10px ์„ ๋จน์˜€๊ธฐ ๋•Œ๋ฌธ์—, ์ปจํ…ํŠธ์˜ width, height ๊ฐ’์€ ๊ฐ๊ฐ 220px 60px ์ด ๋œ๋‹ค.

content-box ๋Š” ์ด๋ ‡๊ฒŒ html ์ปจํ…ํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ padding ๊ฐ’์„ ๋ฐ”๊นฅ์œผ๋กœ ๋ฐ€์–ด๋‚ด์–ด ์˜์—ญ์„ ์ฐจ์ง€ํ•œ๋‹ค.

div ์— ์ง€์ •ํ•œ padding ์€ ์•ˆ์ชฝ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉฐ, margin ๊ฐ’์€ ์ปจํ…ํŠธ์˜ ๋ฐ”๊นฅ์œผ๋กœ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

border-box

border-box ๋ฅผ ์ ์šฉํ•œ ๋ชจ์Šต

์•„๋ž˜์˜ ์—ฐ๋‘์ƒ‰์œผ๋กœ ๋ณด์ด๋Š” ๋ถ€๋ถ„์ด content ์˜ ํฌ๊ธฐ์ด๋‹ค.

์œ„ ์•„๋ž˜, ์™ผ์ชฝ ์˜ค๋ฅธ์ชฝ์œผ๋กœ padding ์„ 10px ์„ ๋จน์˜€์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์ปจํ…ํŠธ์˜ width, height ๊ฐ’์€ ๊ฐ๊ฐ 200px 40px ์ด ๋œ๋‹ค. ์‹ค์ œ ์ปจํ…ํŠธ์˜ ํฌ๊ธฐ๋Š” 180px, 20px ์ด ๋œ๋‹ค.

์ด์™€ ๊ฐ™์ด border-box ๋Š” padding ๊ฐ’์ด ์ปจํ…ํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์•ˆ์œผ๋กœ ๋“ค์–ด์˜ค๊ฒŒ ๋œ๋‹ค.

border-box

๊ฒฐ๋ก 

content-box ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปจํ…ํŠธ๊ฐ€ ์ง€์ •ํ•œ ๊ฐ€๋กœ ์„ธ๋กœ์˜ ๊ฐ’๋ณด๋‹ค ๋” ํฌ๊ฒŒ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ฒŒ ๋œ๋‹ค.

border-box ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์‚ฌ์ด์ฆˆ๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋ ˆ์ด์•„์›ƒ์„ ์žก๋Š”๋ฐ์— ํ›จ์”ฌ ์ˆ˜์›”ํ•˜๋‹ค.

border-box ๋Š” padding ๊ณผ border ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปจํ…ํŠธ ์˜์—ญ์˜ ์•ˆ์œผ๋กœ ๋“ค์–ด์˜ค๊ฒŒ ๋œ๋‹ค.

content-box, border-box ์— ์ƒ๊ด€์—†์ด margin ์˜ ์‚ฌ์ด์ฆˆ๋Š” ํ•ญ์ƒ ์ปจํ…ํŠธ์˜ ๋ฐ”๊นฅ์œผ๋กœ ์‚ฌ์ด์ฆˆ๋ฅผ ์žก๋Š”๋‹ค.

Last updated