TIL/etc

TIL8: CSS ๊ธฐ์ดˆ (2)

Deviloper๐Ÿ˜ˆ 2021. 7. 28. 00:27

๋ฐ•์Šค ๋ชจ๋ธ (Box Model)

๋ฐ•์Šค ๋ชจ๋ธ์€ ์›น์˜ ๊ตฌ์กฐ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๋ชจ๋“  ์›น์‚ฌ์ดํŠธ๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š”๋ฐ์š”. ์›น์‚ฌ์ดํŠธ์˜ ๋ฐ•์Šค๋ฅผ ์‚ดํŽด๋ณด์‹œ๋ ค๋ฉด ๋งฅ๋ถ ๊ธฐ์ค€์œผ๋กœ cmd+option+i ๋ฅผ ๋ˆ„๋ฅด์‹œ๊ณ  ์•„๋ž˜ "Computed" ์„นํ„ฐ๋ฅผ ๋ˆ„๋ฅด์‹œ๋ฉด ๋ณด์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด์„œ HTML์— ์“ฐ์—ฌ์ ธ ์žˆ๋Š” ๋‚ด์šฉ์„ ๊ตฌ์กฐํ™” ์‹œํ‚ค๊ณ  ์ข€ ๋” ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ตฌ์„ฑ์š”์†Œ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

margin (์—ฌ๋ฐฑ)

์—ฌ๋ฐฑ ์ค‘ ๋ฐ”๊นฅ ์—ฌ๋ฐฑ. ๊ฐ๊ฐ์˜ ๊ฐ’์€ top, right, bottom, left๋กœ ์‹œ๊ณ„๋ฐฉํ–ฅ์ž…๋‹ˆ๋‹ค. ๊ฐ’์„ ๋‘๊ฐœ๋งŒ ๋„ฃ์—ˆ์„ ๋•Œ๋Š” top, bottom๊ฐ’ // left, right๊ฐ’์œผ๋กœ ๋‚˜๋‰˜์–ด ์ง‘๋‹ˆ๋‹ค. ํ•˜๋‚˜๋งŒ ๋„ฃ๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ๋„ค ๋ฐฉํ–ฅ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

border(๊ฒฝ๊ณ„์„ )

ํ…Œ๋‘๋ฆฌ๋Š” ๋‹ค์–‘ํ•˜๊ฒŒ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘๊ป˜, ์Šคํƒ€์ผ, ์ƒ‰์ƒ ๋“ฑ์„ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ์„ ๋‘๊ป๊ฒŒ ํ• ๊ฑด์ง€ ์–‡๊ฒŒ ํ• ๊ฑด์ง€, ์‹ค์„ ์œผ๋กœ ํ• ๊ฑด์ง€ ์ ์„ ์œผ๋กœ ํ• ๊ฑด์ง€, ๊ฒ€์ •์„ ์œผ๋กœ ํ• ๊ฑด์ง€ ํŒŒ๋ž‘์„ ์œผ๋กœ ํ• ๊ฑด์ง€ ๋“ฑ๋“ฑ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋‹ค๋ณด๋ฉด ์•ˆ์— ์žˆ๋Š” ๊ธ€๋“ค์ด ๋ฐ•์Šค ๋ฐ–์œผ๋กœ ๋น ์ ธ ๋‚˜๊ฐˆ ์ˆ˜๋„ ์žˆ์„ํ…๋ฐ์š”. ๊ทธ๋Ÿผ ์‹ฌ๋ฏธ์ ์œผ๋กœ ๋ณด๊ธฐ ์•ˆ์ข‹์•„์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์†์„ฑ์— 'overflow: auto'๋ฅผ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค.

 

๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋” ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ๋Š” ๋ฐ•์Šค ํฌ๊ธฐ ์ธก์ • ๊ธฐ์ค€์„ ์–ด๋–ค ๊ฒƒ์„ ์„ ํƒํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ๋ฐ•์Šค์˜ ๋„“์ด๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. container์˜ width๋Š” 100px์ด์ง€๋งŒ ๊ฐœ๋ฐœ์ž๋„๊ตฌ๋ฅผ ํ†ตํ•ด ํญ์„ ๋ณด๋ฉด 124px๋กœ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋‚˜์˜ค๋Š” ์ด์œ ๋Š” 100 + 10*2 + 2*2 = 124 ์ด๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ์š”. ๋ฐ•์Šค์˜ ํญ์€ width ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ padding๊ณผ border๋„ ํฌํ•จํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์— ๋”ํ•ด์„œ padding๊ณผ border๋Š” ์–‘ ๋ฐฉํ–ฅ์— ์„ค์ •๋˜๋ฏ€๋กœ *2๋ฅผ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด์ฃ ! ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ์ผ์ผ์ด ๋”ํ•ด์ค˜์„œ ๊ณ„์‚ฐํ•ด์„œ ์ „์ฒด ํญ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๊นŒ๋‹ค๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด 'box-sizing: border-box;' ๋ผ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์†์„ฑ์„ ์„ค์ •ํ•ด์ค€๋‹ค๋ฉด margin๊ณผ border๊นŒ์ง€ ๊ณ ๋ คํ•œ ํฌ๊ธฐ๋กœ ๊ณ„์‚ฐ์ด ๋ฉ๋‹ˆ๋‹ค.

#container {
  width: 100px;
  padding: 10px;
  background-color: skyblue;
  border: 2px solid plum;
}

#inner {
  width: 100%;
  height: 200px;
  border: 2px solid green;
  background-color: lightgreen;
  padding: 30px;
}

 

์ด์™ธ์—

๋ฐ•์Šค์—๋Š” ์ค„๋ฐ”๊ฟˆ์ด ๋˜๋Š” ๋ฐ•์Šค๊ฐ€ ์žˆ๊ณ  ์˜†์œผ๋กœ ๋ถ™๋Š” ๋ฐ•์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ค„๋ฐ”๊ฟˆ์ด ๋˜๋Š” ๋ฐ•์Šค๋Š” block box๋ผ๊ณ  ํ•˜๋Š”๋ฐ, h1์ด๋‚˜ p๊ฐ€ ์ด์— ๋Œ€ํ•œ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

์ค„๋ฐ”๊ฟˆ์ด ๋˜์ง€ ์•Š๋Š” ๋ฐ•์Šค๋Š” inline block์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, span์ด ์ด์— ๋Œ€ํ•œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. ์ค„๋ฐ”๊ฟˆ์ด ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— width๋‚˜ height๋Š” ์ ์šฉ์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

 

 

 

 

์˜ค๋Š˜์€ ๊ณ„์‚ฐ๊ธฐ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋Š”๋ฐ์š”! ํŒŒ์ด์ฌ ๋•Œ ํ–ˆ๋˜ ๊ณ„์‚ฐ๊ธฐ ๋ฌธ์ œ์™€๋Š” ์ฐจ์›์ด ๋‹ค๋ฅธ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์–ผ๋งˆ๋งŒํผ ๋…ธ๋ ฅํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ๋ฐฐ์›Œ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์ด ์ฒœ์ฐจ๋งŒ๋ณ„์ธ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ๊ณ„์‚ฐ๊ธฐ๋ฅผ ์ข€ ๋” ๋ฉ‹์žˆ๊ฒŒ ๊พธ๋ฏธ๊ธฐ ์œ„ํ•ด์„œ๋Š” css์˜ ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ๊ณต๋ถ€ํ•ด์•ผ ํ•˜๊ณ , ๊ธฐ๋Šฅ์ ์ธ ์ธก๋ฉด์—์„œ ๋ฐœ์ „์‹œํ‚ค๋ ค๋ฉด Java Script ๋ถ€๋ถ„์„ ๋” ๊ณ ๋ฏผํ•ด๋ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋•๋ถ„์— HTML, CSS, Java Script๋ฅผ ์—ฐ๊ด€์ง€์–ด์„œ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ๋˜์—ˆ๊ณ , ์•ž์œผ๋กœ ์–ด๋–ค ๋ฐฉํ–ฅ์œผ๋กœ ๋งˆ์ € ๋” ๊ณต๋ถ€ํ•˜๋ฉด ๋ ์ง€ ๋ฐฉํ–ฅ์„ฑ์„ ์žก์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€ ๋ฌธ์ œ์˜€๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์ฃผ ์›”์š”์ผ๊นŒ์ง€ ์ผ์ •์ด ๋„ˆ๋ฌด ์ •์‹ ์—†์–ด์„œ ์˜ค๋Š˜์€ ๋” ๋ฆฌ๋ทฐํ•  ์‹œ๊ฐ„์ด ์—†๊ฒ ์ง€๋งŒ ์ผ์ •์ด ์–ด๋А ์ •๋„ ๋งˆ๋ฌด๋ฆฌ ๋˜๋ฉด ๋‹ค์‹œ ๊ณ„์‚ฐ๊ธฐ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๋ฉด์„œ ๋” ํšจ์œจ์ ์ธ, ํด๋ฆฐํ•œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.