์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- ๋ธ๋์น ์์ฑ
- branch ํ์ธ
- ๋ธ๋์น ์ญ์
- ์ฝ๋๋ธ๋ก
- ๋ธ๋์น ํ์ธ
- markdown
- Git๋ช ๋ น์ด
- ๋งํฌ๋ค์ด
- branch ์์ฑ
- branch ์ญ์
- ์ฝ๋๋ธ๋ญ
- ![rejected]
- Today
- Total
DevLog
[CSS] ๋ฐ์ค๋ชจ๋ธ(box model) ๋ณธ๋ฌธ
๋ฐ์ค ๋ชจ๋ธ(box model)
๋ชจ๋ HTML ์์๋ ๋ฐ์ค(box) ๋ชจ์์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์ด๊ฒ์ ๋ฐ์ค ๋ชจ๋ธ(box model)์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
๋ฐ์ค ๋ชจ๋ธ์ HTML ์์๋ฅผ ํจ๋ฉ(padding), ํ ๋๋ฆฌ(border), ๋ง์ง(margin), ๊ทธ๋ฆฌ๊ณ ๋ด์ฉ(content)์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค.
1. ๋ด์ฉ(content) : ํ ์คํธ๋ ์ด๋ฏธ์ง๊ฐ ๋ค์ด์๋ ๋ฐ์ค์ ์ค์ง์ ์ธ ๋ด์ฉ ๋ถ๋ถ์ ๋๋ค.
2. ํจ๋ฉ(padding) : ๋ด์ฉ๊ณผ ํ ๋๋ฆฌ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ๋๋ค. ํจ๋ฉ์ ๋์ ๋ณด์ด์ง ์์ต๋๋ค.
3. ํ ๋๋ฆฌ(border) : ๋ด์ฉ์ ํจ๋ฉ ์ฃผ๋ณ์ ๊ฐ์ธ๋ ํ ๋๋ฆฌ์ ๋๋ค.
4. ๋ง์ง(margin) : ํ ๋๋ฆฌ์ ์ด์ํ๋ ์์ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ๋๋ค. ๋ง์ง์ ๋์ ๋ณด์ด์ง ์์ต๋๋ค.
๋ฐ์ค๋ฅผ ๋ฒ์ด๋๋ ์ปจํ ์ธ ์ฒ๋ฆฌ
๋ฐ์ค์ height ์์ฑ์ ์ฝํ ์ธ ๊ฐ ์ฐจ์งํ๋ ๊ณต๊ฐ๋ณด๋ค ์์ ๊ฐ์ ์ง์ ํ์ธ์. ์ปจํ ์ธ ๊ฐ ๋ฐ์ค ๋ฐ๊นฅ์ผ๋ก ๋น ์ ธ๋์ค๋์? ์๋๋ฉด ๋ฐ์ค์ ๋ง๊ฒ ๊ฐ๋ ค์ง๋์?
p { height: 40px; }
[์ฝ๋] pํ๊ทธ์ height ์์ฑ์ ์ฝํ ์ธ ๊ฐ ์ฐจ์งํ๋ ๋์ด๋ณด๋ค ์์ ๊ฐ์ ํ ๋นํฉ๋๋ค.
๋ฐ์ค ํฌ๊ธฐ๋ณด๋ค ์ฝํ ์ธ ํฌ๊ธฐ๊ฐ ๋ ํฐ ๊ฒฝ์ฐ์๋ ์ฝํ ์ธ ๊ฐ ๋ฐ์ค ๋ฐ๊นฅ์ผ๋ก ๋น ์ ธ๋์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฐ ์ํฉ์ ์ํ๋ ์ฌ๋์ ๊ฑฐ์ ์์ ๊ฒ๋๋ค. ์ด๋ ๊ฒ ์ฝํ ์ธ ๊ฐ ๋ฐ์ค๋ฅผ ๋ซ๊ณ ๋๊ฐ๋ ๊ฒฝ์ฐ์๋ ๋ฐ์ค ํฌ๊ธฐ์ ๋ง๊ฒ ์ฝํ ์ธ ๋ฅผ ๋์ด์ ํ์ํ์ง ์๊ฑฐ๋, ํน์ ๋ฐ์ค ์์ ์คํฌ๋กค์ ์ถ๊ฐํ์ฌ ์ฝํ ์ธ ๋ฅผ ํ์ธํ ์ ์๊ฒ ๋ง๋ญ๋๋ค.
[์ฝ๋] pํ๊ทธ์ overflow ์์ฑ์ ์ง์ ํด ๋ฐ์ค๋ณด๋ค ํฐ ์ฝํ ์ธ ์๋ ์คํฌ๋กค์ ํ์ํฉ๋๋ค.
๋ณ๊ฒฝ์ฌํญ์ codepen์์ ํ์ธํ ์ ์์ต๋๋ค.
overflow ์์ฑ์ auto ๊ฐ์, ์ฝํ ์ธ ๊ฐ ๋์น๋ ๊ฒฝ์ฐ ์คํฌ๋กค์ ์์ฑํ๋๋ก ํฉ๋๋ค. ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ๋์น๋ ์ฝํ ์ธ ์ ๋ด์ฉ์ ๋ณด์ฌ์ฃผ๊ณ ์ถ์ง ์์ ์ ์์ต๋๋ค. ์ด ๋์๋ overflow ์์ฑ์ hidden ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. overflow ์์ฑ์ x์ถ๊ณผ y์ถ์ ์ง์ ํด ๊ฐ๋ก ๋ฐฉํฅ์ผ๋ก ์คํฌ๋กคํ๊ฑฐ๋ ์ธ๋ก ๋ฐฉํฅ์ผ๋ก ์คํฌ๋กค ํ ์ ์๊ฒ๋ ์ง์ ํ ์ ์์ต๋๋ค. overflow-x ์์ฑ๊ณผ overflow-y ์์ฑ์ ์ด์ฉํ๋ฉด ๋ ๋ฐฉํฅ์ ๋ชจ๋ ์ง์ ํ ์ ์์ต๋๋ค.
๋ฐ์ค ํฌ๊ธฐ ์ธก์ ๊ธฐ์ค
๋ฐ์ค ํฌ๊ธฐ๋ฅผ ์ธก์ ํ๋ ๊ธฐ์ค์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์์ ๋ฅผ ๋ณด๋ฉฐ ํจ๊ป ์ดํด๋ด ๋๋ค.
<div id="container">
<div id="inner">
์์ชฝ box
</div>
</div>
[์ฝ๋] html ์์
#container {
width: 300px;
padding: 10px;
background-color: yellow;
border: 2px solid red;
}
#inner {
width: 100%;
height: 200px;
border: 2px solid green;
background-color: lightgreen;
padding: 30px;
}
[์ฝ๋] CSS ์์
๋ณ๊ฒฝ์ฌํญ์ codepen์์ ํ์ธํ ์ ์์ต๋๋ค.
ํน์ ์ด๋ค ๋ถ๋ถ์ด ๋ฌธ์ ์ธ์ง ์๊ฒ ๋์? id๊ฐ container์ธ ๋ฐ์ค์ width ์์ฑ์ 300px์ ์ง์ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ๋ฐ์๋๊ตฌ๋ก ํ์ธํ ํด๋น ์์์ width ๊ฐ์ 324px ์ ๋๋ค. CSS์์ ์ง์ ํ ๋ ์์์ ๋ํด ์๋์ ๊ฐ์ด ํ์ธํ ์ ์์ต๋๋ค.
- #container์ ๋๋น๋ 300px์ด ์๋๋ผ, 324px์
๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ๋ค์๊ณผ ๊ฐ์ ๊ณ์ฐ์ ์คํํฉ๋๋ค.
300px (์ฝํ ์ธ ์์ญ) + 10px (padding-left) + 10px (padding-right) + 2px (border-left) + 2px (border-right) - #inner์ 100%๋ 300px์ด ์๋๋ผ, 364px์
๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ๋ค์๊ณผ ๊ฐ์ ๊ณ์ฐ์ ์คํํฉ๋๋ค.
300px (300px์ 100%) + 30px (padding-left) + 30px (padding-right) + 2px (border-left) + 2px (border-right)
์ฒ์ ๋ ์ด์์ ๋์์ธ์ ํ ๋ ๊ฐ์ฅ ๋ง์ดํ๋ ์ค์๊ฐ ์์ต๋๋ค. ๋ฐ์ค์ ์ ์ฉํ ์ฌ๋ฐฑ์ ๊ณ ๋ คํ์ง ์๊ณ ๋ฐ์ค์ ํฌ๊ธฐ๋ฅผ ๋์์ธํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ๋ฐ์ค์ ํฌ๊ธฐ๋ฅผ ๋์์ธํ ๋ ์ฝํ ์ธ ์์ญ๋ง ๊ณ ๋ คํ๋ฉด, ๊ฐ๋ฐ ๊ณผ์ ์์ ์ฒ์ ์๊ฐํ ๋ ์ด์์์ ๋ฒ์ด๋ ์ ์์ต๋๋ค. ์ฌ๋ฐฑ์ ๊ณ ๋ คํ์ง ์์ ๊ณ์ฐ ๋ฐฉ์์ ๋ ์ด์์ ๋์์ธ์ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค.
๋ ์ด์์ ๋์์ธ์ ์กฐ๊ธ ๋ ์ฝ๊ฒํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ฌ๋ฐฑ๊ณผ ํ ๋๋ฆฌ ๋๊ป๋ฅผ ํฌํจํ ๋ฐ์ค ๊ณ์ฐ ๋ฒ์ ๋๋ค. *์ ๋ชจ๋ ์์๋ฅผ ์ ํํ๋ ์ ๋ ํฐ์ ๋๋ค. ๋ชจ๋ ์์๋ฅผ ์ ํํด box-sizing ์์ฑ์ ์ถ๊ฐํ๊ณ , border-box๋ผ๋ ๊ฐ์ ์ถ๊ฐํฉ๋๋ค.
* {
box-sizing: border-box;
}
[์ฝ๋] ๋ชจ๋ ์์์ 'box-sizing: border-box'๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๋ณ๊ฒฝ์ฌํญ์ codepen์์ ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ๋ชจ๋ ์์์ box-sizing: border-box๋ฅผ ์ ์ฉํ๋ฉด, ๋ชจ๋ ๋ฐ์ค์์ ์ฌ๋ฐฑ๊ณผ ํ ๋๋ฆฌ๋ฅผ ํฌํจํ ํฌ๊ธฐ๋ก ๊ณ์ฐ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก box-sizing์ HTML ๋ฌธ์ ์ ์ฒด์ ์ ์ฉํฉ๋๋ค. box-sizing์ ์ผ๋ถ ์์์๋ง ์ ์ฉํ๋ ๊ฒฝ์ฐ, ํผ๋์ ๊ฐ์ค์ํฌ ์ ์์ต๋๋ค. ์์ผ๋ก ๋ ์ด์์๊ณผ ๊ด๋ จ๋ ์ด์ผ๊ธฐ๋ฅผ ํ ๋์๋ border-box ๊ณ์ฐ๋ฒ์ ๊ธฐ์ค์ผ๋ก ์ด์ผ๊ธฐํฉ๋๋ค. ๋ฐ์ค ํฌ๊ธฐ ์ธก์ ๊ธฐ์ค ๋๊ฐ์ง๋ฅผ ํญ์ ์ผ๋ํด์ฃผ์ธ์.
* content-box๋ ๋ฐ์ค์ ํฌ๊ธฐ๋ฅผ ์ธก์ ํ๋ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ ๋ ์ด์์ ๋์์ธ์์ ์ฌ๋ฐฑ๊ณผ ํ ๋๋ฆฌ๋ฅผ ํฌํจํ๋ ๋ฐ์ค ํฌ๊ธฐ ๊ณ์ฐ๋ฒ์ธ border-box๋ฅผ ๊ถ์ฅํฉ๋๋ค.
์ฐธ๊ณ ์ถ์ฒ:
http://tcpschool.com/css/css_boxmodel_boxmodel
์ฐธ๊ณ ํ๋ฉด ์ข์ ๊ธ:
https://dasima.xyz/css-box-sizing-content-box-vs-border-box/
'๐ง๐ปโ๐ป ๊ฐ๋ฐ๊ฐ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CSS] background & background-color ์์ฑ ์ฐจ์ด (0) | 2021.06.21 |
---|---|
[HTML] div, section, article <tag>์ ์ฐจ์ด (0) | 2021.06.21 |
react-router ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์นํ๊ธฐ (0) | 2021.06.07 |
java - ๋ฒ๊ฑฐํน ํค์ค์คํฌ (0) | 2020.09.12 |
java - ๋ฐ๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์ ํ์ฉํ ์ํ๊ธฐ ์ ์ (0) | 2020.09.01 |