Language/CSS

[CSS] 박스 모델 - 패딩, 테두리, 마진, 아웃라인

jsh5408 2021. 11. 1. 22:14

박스 모델(box-model)

- 박스 모양으로 구성된 모든 HTML 요소

1. 내용(content) : 텍스트나 이미지가 들어있는 박스의 실질적인 내용 부분
2. 패딩(padding) : 내용과 테두리 사이의 간격. 눈에 보이지X
3. 테두리(border) : 내용와 패딩 주변을 감싸는 테두리
4. 마진(margin) : 테두리와 이웃하는 요소 사이의 간격. 눈에 보이지X

 

- height와 width 속성 => 내용 부분만을 대상

* IE 8 이하는 height, width에 패딩, 테두리 크기 포함 => <!DOCTYPE html> 필수!!

 

 


 

패딩(padding)

- 내용과 테두리 사이의 간격

- 배경색의 영향을 받음

 

1. padding-top
2. padding-right
3. padding-bottom
4. padding-left

div.pad {
	padding-top: 50px;
	padding-right: 10px;
	padding-bottom: 30px;
	padding-left: 100px;
}

 

 

패딩 축약 표현(padding shorthand)

div.four { padding: 20px 50px 30px 50px; }
div.three { padding: 20px 50px 30px; }

- 4개의 padding 속성값을 가질 때는 top - right - bottom - left

- 3개의 padding 속성값을 가질 때는 top - right&left - bottom

- 2개의 padding 속성값을 가질 때는 top&bottom - right&left

- 1개의 padding 속성값을 가질 때는 모든 패딩값을 같게

 

 


테두리(border)

- 내용와 패딩 주변을 감싸는 테두리

 

 

border-style 속성

- 테두리의 다양한 모양 설정

 

- dotted : 테두리를 점선으로 설정
- dashed : 테두리를 약간 긴 점선으로 설정
- solid : 테두리를 실선으로 설정
- double : 테두리를 이중 실선으로 설정
- groove : 테두리를 3차원인 입체적인 선으로 설정, border-color 속성값에 영향을 받음
- ridge : 테두리를 3차원인 능선효과가 있는 선으로 설정, border-color 속성값에 영향을 받음
- inset : 테두리를 3차원인 내지로 끼운 선으로 설정, border-color 속성값에 영향을 받음
- outset : 테두리를 3차원인 외지로 끼운 선으로 설정, border-color 속성값에 영향을 받음
- none : 테두리를 없앰
- hidden : 테두리가 존재하기는 하지만 표현되지는 않음

.dotted {border-style: dotted;}
.dashed {border-style: dashed;}
.solid {border-style: solid;}
.double {border-style: double;}
.groove {border-style: groove;}
.ridge {border-style: ridge;}
.inset {border-style: inset;}
.outset {border-style: outset;}
.none {border-style: none;}
.hidden {border-style: hidden;}
.mix {border-style: solid dashed dotted double;}

 

 

border-width 속성

- 테두리의 두께 설정

- px, em, cm 등 크기 단위를 이용해 직접 설정 가능

- thin, medium, thick 예약어를 이용해 설정 가능

.dottedA { border-style: dotted; border-width: 2px; }
.dottedB { border-style: dotted; border-width: 5px; }
.dashedA { border-style: dashed; border-width: thin; }
.dashedB { border-style: dashed; border-width: thick; }
.doubleA { border-style: double; border-width: 5px; }
.doubleB { border-style: double; border-width: thick; }
.mix { border-style: solid; border-width: 1px 2px 10px thick; }

 

 

border-color 속성

- 테두리의 색상 설정

- 투명한 선 : transparent 속성값 이용

- 설정되지 않으면 color 속성값을 그대로 물려받음

.red { border-color: red; }
.green { border-color: rgb(0,255,0); }
.blue { border-color: #0000FF; }
.mix { border-color: red green blue maroon; }
.color { color: teal; }

 

 

테두리(border)의 개별 설정

.mixA {
	border-top-style: dotted;
	border-right-style: double;
	border-bottom-style: dotted;
	border-left-style: double;
}
.mixB { border-style: dotted double; }
/* mixA == mixB 같은 효과 */

- 4개의 border-style 속성값을 가질 때는 top - right - bottom - left 

- 3개의 border-style 속성값을 가질 때는 top - right&left - bottom 

- 2개의 border-style 속성값을 가질 때는 top&bottom - right&left 

- 1개의 border-style 속성값을 가질 때는 모든 테두리의 스타일을 같게

 

 

테두리 축약 표현(border shorthand)

.good { border: 3px solid teal; }
.wrong { border: 5px teal; }

* border 속성 설정 시, 반드시 border-style 속성이 먼저 설정되어 있어야 함

 

 


 

마진(margin)

- 테두리와 이웃하는 요소 사이의 간격

- 배경색의 영향 받지 X

 

1. margin-top
2. margin-right
3. margin-bottom
4. margin-left

 

- 속성값을 음수로 설정하면 다른 요소 위에 겹치기 가능

div.mar {
	margin-top: -25px;
	margin-right: 10px;
	margin-bottom: 30px;
	margin-left: 100px;
}

 

 

마진 축약 표현(margin shorthand)

div.four { margin: 20px 50px 30px 50px; }
div.three { margin: 20px 50px 30px; }

- 4개의 margin 속성값을 가질 때는 top - right - bottom - left 

- 3개의 margin 속성값을 가질 때는 top - right&left - bottom 

- 2개의 margin 속성값을 가질 때는 top&bottom - right&left 

- 1개의 margin 속성값을 가질 때는 모든 마진값을 같게

 

 

margin 속성값에 auto를 사용하는 이유

- 웹 브라우저가 수평 방향 마진값을 자동으로 설정

- 즉, HTML 요소의 왼쪽과 오른쪽 마진 자동 설정

=> 부모 요소의 정중앙에 위치

div {
	border: 2px solid teal;
	width: 300px;
	margin: auto;
}

 

 


 

아웃라인(outline)

- HTML 요소의 가장 바깥 부분을 둘러싸고 있는 아웃라인

- style, width, color 속성을 가짐

- HTML 요소의 전체 크기에는 포함 X, 높이나 너비에 영향도 X

 

 

outline-style 속성

- 아웃라인을 다양한 모양으로 설정

 

1. dotted : 아웃라인을 점선으로 설정
2. dashed : 아웃라인을 약간 긴 점선으로 설정
3. solid : 아웃라인을 실선으로 설정
4. double : 아웃라인을 이중 실선으로 설정
5. groove : 아웃라인을 3차원인 입체적인 선으로 설정, outline-color 속성값에 영향을 받음
6. ridge : 아웃라인을 3차원인 능선효과가 있는 선으로 설정, outline-color 속성값에 영향을 받음
7. inset : 3차원인 내지로 끼운 선으로 설정, outline-color 속성값에 영향을 받음
8. outset : 3차원인 외지로 끼운 선으로 설정, outline-color 속성값에 영향을 받음
9. none : 아웃라인(outline)을 없앰
10. hidden : 아웃라인(outline)이 존재하기는 하지만 표현되지는 않음

p.dotted {outline-style: dotted;}
p.dashed {outline-style: dashed;}
p.solid {outline-style: solid;}
p.double {outline-style: double;}
p.groove {outline-style: groove;}
p.ridge {outline-style: ridge;}
p.inset {outline-style: inset;}
p.outset {outline-style: outset;}
p.none {outline-style: none;}
p.hidden {outline-style: hidden;}

* IE 8 이하는 <!DOCTYPE html> 태그가 있어야만 제대로 표현

 

 

outline-width 속성

- 아웃라인의 두께 설정

- px, em, cm 등 크기 단위를 이용해 직접 설정 가능

- thin, medium, thick 예약어를 이용해 설정 가능

p.solidA { outline-style: solid; outline-color: violet; outline-width: 2px; }
p.solidB { outline-style: solid; outline-color: coral; outline-width: 7px; }
p.dashedA { outline-style: dashed; outline-color: violet; outline-width: thin; }
p.dashedB { outline-style: dashed; outline-color: coral; outline-width: thick; }

 

 

outline-color 속성

- 아웃라인의 색상 설정

- 색반전을 나타내는 invert 속성값 사용 가능 => 배경색과 상관없이 색반전 설정

p { border: 1px solid black; outline-style: dashed; }
p.red { outline-color: red; }
p.green { outline-color: rgb(0,255,0); }
p.blue { outline-color: #0000FF; }
p.invert { outline-color: invert; }

 

 

아웃라인 축약 표현(outline shorthand)

p { border: 1px solid black; }
p.none { border-style: none; }
p.good { outline: 3px solid teal; }
p.wrong { outline: 5px teal; }

* outline 속성 설정 시, 반드시 outline-style 속성이 먼저 설정되어 있어야 함

 

 

 

 

 

http://tcpschool.com/css/css_boxmodel_boxmodel

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com