TIL8: CSS ๊ธฐ์ด (2)
๋ฐ์ค ๋ชจ๋ธ (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๋ฅผ ์ฐ๊ด์ง์ด์ ๊ณต๋ถํ ์ ์๋ ๊ธฐํ๊ฐ ๋์๊ณ , ์์ผ๋ก ์ด๋ค ๋ฐฉํฅ์ผ๋ก ๋ง์ ๋ ๊ณต๋ถํ๋ฉด ๋ ์ง ๋ฐฉํฅ์ฑ์ ์ก์ ์ ์๊ฒ ํด์ค ๋ฌธ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ค์์ฃผ ์์์ผ๊น์ง ์ผ์ ์ด ๋๋ฌด ์ ์ ์์ด์ ์ค๋์ ๋ ๋ฆฌ๋ทฐํ ์๊ฐ์ด ์๊ฒ ์ง๋ง ์ผ์ ์ด ์ด๋ ์ ๋ ๋ง๋ฌด๋ฆฌ ๋๋ฉด ๋ค์ ๊ณ์ฐ๊ธฐ ์ฝ๋๋ฅผ ๋ถ์ํ๋ฉด์ ๋ ํจ์จ์ ์ธ, ํด๋ฆฐํ ์ฝ๋๋ฅผ ๋ง๋ค์ด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.