padding : content와 border 사이의 공간
margin : border 밖의 공간
box-sizing : border-box;
<div class="box">
Calculating the actual content size
</div>
<style>
.box {
width: 600px;
height: 50px;
padding: 20px;
border: 10px solid red;
text-align: center;
line-height: 50px;
font-size: 30px;
}
이 예시에서 저 박스의 너비는 지정한 600px일 것 같지만 사실은 아니다.
왜냐하면 padding값과 border의 두께가 각각 양쪽에 추가되었기 때문이다.
실제 width를 계산해보면,
600px + padding: 40px(20px+20px) + border: 20px(10px+10px) = 660px
box-sizng: border-box; 를 이럴때 활용가능하다.
이 속성을 추가하면 padding과 border를 추가해도, 기존에 설정한 width:600px의 범위내에 추가되어서 총 width가 변하지 않는다.
🍫 근데 이게 굳이 왜 필요하냐고?
다양한 이유가 있겠지만, 특히 레이아웃을 잡을 때 중요하다.
예를들어,
이렇게 잡아야 하는 레이아웃인데. box-sizing을 모른다면
요렇게 문제가 생기는거다.