각각의 태그들이 웹페이지에 표현될 때 그 태그의 부피감(여백 위치 크기)을 결정하는 것이 Box Model이다. 각각의 태그들은 사실 태그 바깥쪽에 박스 형태를 가지고 있기 때문에 Box Model이라고 불린다.
(그림 출처 : https://velog.io/@leeeeunz/TIL-06.-Box-Model)
Blocl Level Element에서의 Box Model은 결국 border
, padding
, margin
에 관한 얘기다. Block Level의 Box Model은 width
와 height
의 조작도 가능하다.
div {
border-width: 10px;
border-style: solid:
border-color: red;
}
div {
border : 10px solid red;
}
HTML의 각 Tag는 Box형태를 띈다. Box의 테두리를 border
로 칭한다.
border-width
와 border-style
, border-color
를 축약해서 border
에 표현 가능하다.
Content와 border 사이의 간격을 조정하는 것이 padding이다.
div {
border : 10px solid red;
padding : 20px
}
border와 여백 사이의 간격을 조정하는 것이 margin이다.
div {
border : 10px solid red;
padding : 20px
margin : 10px
}
margin, padding 축약 표현
- margin과 padding은
margin-top:10px
처럼 세부적으로 크기를 지정할 수 있다.- 시계방향으로
top->right->bottom->left
로 margin을 먹일 수도 있다.
margin : 20px 0px 20px 0px
의 경우,top/left margin = 20px, right/left margin은 0px
- 위와 같이 top과 bottom만 margin을 주려면,
padding : 20px 0px
처럼 써도 된다.
Inline Level Element에서 Box Model은 Block의 Box Model과 다르게 동작한다.
a {
border : 10px solid red;
padding : 20px
margin : 10px
width : 50px
}
직전 포스트에 언급했듯이, Inline level의 Box Model은 width
변경이 적용되지 않는다.
[출처] : 생활코딩
보통 Box를 다룰 때, 예측한 스타일과 다른 크기로 박스가 보여지는 경우가 있다. 이때 box-sizing을 이용해 Box의 크기를 예측 가능하도록 만들어보자.
<style>
div{ margin : 10px;}
#small{ border : 10px solid black;}
#large{ border : 30px solid black;}
</style>
<div id="small">small</div>
<div id="large">large</div>
div
type에 width : 150px
을 주면, Box 크기는 예상과 달라진다.box-sizing
이라는 속성이 생겼다.box-sizing
의 기본값은 content-box
다.
content-box
: Content 영역을 box로 보고 width와 height를 조정하게된다.border-box
: Border 까지의 영역을 box로 보고 width와 height를 조정하게 된다.*{ box-sizing: border-box}
) universal selector로 border-box를 사용해서 예측 가능하도록 만든다.