본문 바로가기
Frontend/CSS

[CSS] 박스 모델 (Box Model)

by Rayched 2023. 4. 5.
1. 박스 모델의 정의 (Box Model)
2. 박스모델 영역 별 속성
 ① content 속성
 ② padding 속성
 ③ border 속성
 ④ margin 속성
 ⑤ box-sizing 속성
3. 마치며

1. 박스 모델의 정의 (Box Model)

<!-- 예제 소스코드 -->

<!DOCTYPE html>
<html>
    <head>
    	<meta charset="utf-8">
        <title>박스 모델이란 무엇인가?</title>
    </head>
    <body>
    	<p>
        Box란 HTML 문서가 랜더링될 때<br/>
        각 요소가 사각형 형태로 차지하고 있는 영역을 말한다.
        </p>
    </body>
</html>

위의 소스 코드를 복사해서, html 문서로 만들고 이를 웹 브라우저에서 열어보자.

예제 코드 실행

이제 여기서 '개발자 도구'를 한 번 열어서 <p> 요소를 클릭해보자.

그러면 아래와 같은 형태로 해당 요소에 하이라이트가 들어온 것을 확인할 수 있다.

<p> 태그는 블록 레벨 요소를 만드는 블록 태그이기 때문에

웹 브라우저의 한 영역을 사격형의 형태로 전부 차지하고 있다.

여기서 HTML 요소가 차지하고 있는 영역을 '박스(Box)'라고 한다.

 

그리고 이러한 박스를 CSS를 통해서 크기나 위치, 속성(색상, 배경, 테두리 모양 등)을 임의로 조정할 수 있으며

'내용(content)', '안쪽 여백 (padding)'. '테두리(border)', '바깥 여백(margin)' 네 가지로 구성되어 있다.

Box model 구성, 크롬에서 개발자 도구를 사용하면 우측과 같은 박스 모델이 나오는 것을 확인 가능

content (내용)
 => 텍스트나 이미지 등 요소의 실질적인 내용이 들어간 부분

padding (안쪽 여백)
 => content와 border 사이의 간격으로 눈에 보이지 않는다.

border (테두리)
 => content와 padding 주변을 감싸는 테두리

margin (바깥 여백)
 => border, 테두리와 다른 이웃 요소들 사이의 간격,
padding처럼 눈에 보이지는 않는다.

2. 박스모델 영역 별 속성

① content 속성

 - 'width'와 'height' 속성을 통해서 content 영역의 너비와 높이를 임의로 지정할 수 있다.

 - px, em 등의 단위로 content 영역의 크기를 명시한다.

 - width와 height를 통해서 지정한 크기는 content 영역에만 적용되고

   나머지 padding, border, margin 영역에는 적용되지 않는다.

<!-- content 영역 크기 지정 예제 -->

<style>
    p {
    	width: 100px;
        height: 20px;
    }
</style>

<!-- 
<p>area</p>
-->

content 영역의 크기가 각각 100px, 20px로 지정된 것을 확인할 수 있다.


② padding 속성

 - 내용(content)과 테두리(border) 사이 간격인 padding 영역의 크기를 설정하는 속성

 - 'background-color' 속성으로 설정한 배경색이 동일하게 적용된다.

 - 'padding-(top/right/left/bottom)' 네 가지 속성을 통해서 padding 영역의 상하좌우 크기를 지정할 수 있다.

<!-- padding 영역 크기 지정 예제 -->

<style>
    p {
    	<!-- 글자색, 배경색 설정 -->
    	color: white;
    	background-color: blue;
        
    	<!-- content 영역 설정-->
    	width: 100px;
        height: 20px;
        
        <!-- padding 영역 크기 지정-->
        padding-top: 5px;
        padding-left: 10px;
        padding-right: 15px;
        padding-bottom: 20px;
    }
</style>

<!-- 
<p>area</p>
-->

위에서 설정한 배경색과 padding 영역 크기 설정이 정상적으로 적용된 것을 확인할 수 있다.


③ border 속성

 - content와 padding 영역을 둘러싸는 테두리의 스타일을 설정하는 속성

 - 하위 속성으로 'border-style', 'border-color', 'border-width'가 존재한다.

 

  (1). border-style 속성

   - 테두리의 모양을 원하는 형태로 지정 가능한 속성

   - 사용할 수 있는 속성 값으로는 none(테두리 無), hidden(테두리 숨김), solid(직선), dotted(점선) 등이 있다.

border-style 예제

박스 모델 예제

border-style: solid; => solid(직선)


border-style: dotted; => dotted(점선)


border-style: dashed; => dashed(굵은 점선)


border-style: double; => double(이중실선)


border-style: groove; => groove(파인 형태 테두리)


border-style: none; => none(테두리 없음)

    여기서 다루지 않은 나머지 border-style 속성 값은 아래의 링크를 참고하길 바란다.

MDN - CSS border-style

 

(2). border-color 속성

 - 테두리의 색상을 설정하는 속성, 기본적인 color 속성 값을 사용한다.

 - 테두리 색상을 별도로 지정하지 않았다면, 해당 요소에서 설정한 color 속성 값을

   그대로 적용받는다.

 - 'border-(top/left/right/bottom)-color' 속성을 통해서

    테두리의 색상을 각기 다르게 지정하는 것도 가능하다.

border-color 예제

박스 모델 예제

border-color: red; => 테두리 색상=red


border-(top/left/right/bottom)-color: red/blue; => 테두리 색상=red,blue

 

(3). border-width 속성

 - 테두리의 두께를 설정하는 속성

   px, em, cm과 같은 css 크기 단위를 이용해서 테두리 두께를 설정한다.

 - thin(얇은), medium(보통), thick(굵은)과 같은 미리 설정된 예약어를 통해서

   테두리 두께를 설정하는 것도 가능하다.

 - 'border-(top/left/right/bottom)-width' 속성을 통해서

    테두리 두께를 상하좌우 각기 다르게 설정할 수 있다.

border-width 속성
박스 모델 예제

border-width: 10px; => 테두리 두께=10px


border-(top/bottom/right/left)-width: 10px/20px; => 테두리 두께=10, 20px


border-width: thick; => 테두리 두께=thick


④ margin 속성

  - content, padding, border 영역을 감싼 margin 영역의 크기를 설정하는 속성

  - padding과는 다르게 'background-color'로 설정한 배경색은

     margin 영역에 적용되지 않는다.

  - 'margin-(top/left/right/bottom)' 속성을 통해서 margin 영역의

     상하좌우 크기를 다르게 설정할 수 있다.

  - 'margin: 20px 50px 30px 50px;'과 같이 축약해서 설정도 가능하다.)

    (여기서 적용되는 순서는 top - right - bottom - left 순으로 적용된다.)

     속성 값이 20px, 30px, 50px로 3개라면 top - (right, left) - bottom 순으로

     30px, 50px로 2개라면 (top, bottom) - (right, left) 순으로 적용된다.


⑤ box-sizing 속성

- 요소의 너비와 높이를 계산하는 방법을 지정하는 속성

- 'content-box', 'border-box' 두 가지 속성 값을 사용한다.

p {
    width: 50px;
    height: 50px;
    
    box-sizing: content-box;
    /* width, height로 정한 크기를 content 영역에만 적용한다.*/
    
    box-sizing: border-box;
    /* width, height 값을 border 영역까지 적용한다.*/
}

3. 마치며

2023.04.17 - 본문 뼈대 완성
2023.10.21 목차 - 본문 바로가기 추가

'Frontend > CSS' 카테고리의 다른 글

[CSS] position 속성  (0) 2023.08.09
[CSS] 선택자 1 (기본, 그룹 선택자)  (0) 2023.03.24
[CSS] CSS 개요 (CSS 정의, 기본 문법)  (0) 2023.03.20