프로그래밍/CSS

09 박스모델(BOX MODEL)과 박스 사이징

윤지(●'◡'●) 2021. 5. 3. 01:56
반응형

 


박스 모델 (BOX MODEL)

 

 

 

 

 

- 모든 HTML요소는 박스 모양으로 구성된다.
- 박스 모델이라고 부른다
- 박스 모델은 HTML요소를 패딩, 테두리, 마진, 내용으로 구분한다.

 

 

 

내용(content)

 

텍스트나 이미지가 들어있는 박스의 실질적인 내용 부분이다.

 

 

 

패딩(padding)

 

내용과 테두리 사이의 간격이다.

 

padding-top 위쪽 간격을 설정한다.
padding-right 오른쪽 간격을 설정한다.
padding-bottom 아래쪽 간격을 설정한다.
padding-left 왼쪽 간격을 설정한다.
padding 모든 패딩 속성을 한꺼번에 설정한다.
방향은 위부터 시작해서 시계방향으로 설정한다.

 

[예시]

div{padding-top: 20px;}
div{padding-right: 20px;}
div{padding-bottom: 20px;}
div{padding-left: 20px;}

 

이렇게 위의 설명처럼 방향별로 각 각 패딩값을 줄 수도 있지만 한번에 적용도 가능하다

 

 

[문법] ★ 중요

선택자{padding: top패딩값 right패딩값 bottom패딩값 left패딩값;}
선택자{padding: top패딩값 right와left패딩값 bottom패딩값;}
선택자{padding: top과bottom패딩값 right와left패딩값;}
선택자{padding: 4방향패딩값;}

 

[예시]

<div id="padding">안녕하세요</div>

div#padding{padding: 20px 50px 30px 10px;}
/*top:20px, right:50px, bottom:30px, left:10px*/

div#padding{padding: 20px 50px 30px;}
/*top:20px, right&left:50px, bottom:30px*/

div#padding{padding: 20px 50px;}
/*top&bottom:20px, right&left:50px*/

div#padding{padding:20px;}
/*top&bottom&right&left:20px*/

 

 

 

테두리(border)

 

 내용(content)과 패딩(padding) 주변을 감싸는 테두리이다.

 

1) border-style

테두리를 다양한 모양으로 설정한다.

 

solid 직선
dotted 점선
dashed 길쭉한 점선
double 두줄

 

왼쪽부터 순서대로 solid, dotted, dashed, double이다.

 

 

2) border-color

 

테두리 색상을 설정한다. (기본은 검정)

 

[문법]

선택자{border-color: 색상값; }

 

[예시]

 .border1 {
            border-style: solid;
            border-color: red;
            }

 

3) border-width

 테두리의 두께를 설정한다.

 

[문법]

선택자{border-width: 굵기값;}

 

[예시]

div{border-width: 5px;}

 

 

 

마진(margin)

 

테두리(border)와 이웃하는 요소 사이의 간격이다.

 

 

* 세로 겹침 현상

세로로 나열된 두 박스의 간격은 두 마진의 합이 아니라 둘 중 큰 값을 선택한다.

 

[예시]

.margin1 {margin: 30px 50px 30px 50px;}
.margin2 {margin: 30px 50px 50px 50px;}

 

위 사진처럼 겹치는 bottom과 top 마진이 각각 적용되는것이 아니라 둘 중 큰 값으로 결정된다.

 

 

 

 

 

박스 사이징(box-sizing)

 

 

박스 사이징 속성의 특징은 아래와 같다.

 

- width,height값에 padding이나 border의 영역은 포함되지 않는다

- width가 100%로 설정되었을 경우 padding이나 border속성을 추가 할 수 없다

- css3 부터는 box-sizing 속성을 추가(padding과 border를 width와 height값에 포함)

 

 

content-box 기존 계산법이다.
width,height값에 padding과 border를 포함하지 않는다.
border-box width,height값에 padding과 border를 포함

 

 

[예시]

 

<style>
        div {
            width: 300px;
            height: 150px;
            margin: 10px;
            padding: 30px;
            border: 3px solid red;
        }
        .boxsizing1{ box-sizing: content-box;}
        .boxsizing2{ box-sizing: border-box;}
</style>
<body>
    <h2>박스사이징</h2>
    <div class="boxsizing1">box-sizing = "content-box"</div>
    <div class="boxsizing2">box-sizing = "border-box"</div>
</body>

 

[결과]

 

content-box를 적용한 왼쪽 사진을 보면, width,height값에 padding과 border를 포함하지 않기 때문에

contents의 크기가 300x150이다.

하지만, border-box를 적용한 오른쪽 사진을 보면 width,height값에 padding과 border를 포함하기때문에

contents의 크기는 234x84로 padding과 border의 값을 합쳐야만 300x150이 된다.

 

 

 

 

 

사진 출처: www.tcpschool.com/

 


열심히 공부하고 있지만, 오류 사항이 존재 할 수 있습니다.

수정 사항이 존재 할 경우 알려주시면 감사하겠습니다 <(__)>

반응형