웹프로그래밍/CSS 3

CSS - 박스 모델

Uisin 2024. 7. 30. 17:58

박스 모델

 

박스 모델

- 텍스트나 이미지, 테이블 등의 요소를 배치했을 때 각각의 요소가 가지는 크기 속성

- 웹 문서의 레이아웃을 정의하는데 깊은 관여를 한다

- 뭔가 요소 간의 거리를 떨어뜨리거나 크기를 조절하고 싶으면 박스 모델의 속성을 조절하면 된다

- 박스 모델은 Content, Padding, Border, Margin으로 이루어져 있다

 

 

 

Content

- p태그, a태그, div, span 등 텍스트를 포함하거나 이미지 등의 파일을 포함하는 모든 HTML 요소의 알맹이를 의미한다

- content를 중심으로 padding,margin,border가 둘러쌓여있는 형태로 이해하면 된다

- 속성은 너비와 높이가 있는 width나 height의 value를 정하고 min,max를 통해 최솟값 최댓값을 정하기도 한다

- content의 크기는 px(픽셀)단위, %단위, cm단위로 설정이 가능한데 %의 경우 부모를 기준으로 한다

 

박스 안의 파란색 부분이 content가 된다

 

Border

- content가 알맹이였다면 border는 그것을 감싸고 있는 껍질이라고 보면된다

- border의 설정을 건드려서 껍질이 얼마나 두꺼워야 할 지 껍질의 색은 어떨지, 그리고 껍질의 스타일이 점선일지 실선일지 등을 정할 수 있다

- border-radius 설정을 건드린다면 껍질의 곡률을 건드려서 얼마나 더 원형에 가까워질지를 정할 수 있다.

보라색 부분이 border가 되겠다! 포도처럼 보라색 껍질인 것이다...

 

border-width

- 테두리의(껍질) 두께를 px, pt, cm 같은 단위로 설정한다

- 아무 방향도 명시하지 않으면 모든 방향의 두께에 스타일이 적용되지만 top, bottom, right, left로 늘릴 부분을 명시할 수도 있다

 

 .box-width {
      border-width: 10px 5px 15px 20px; /* 상, 우, 하, 좌 각각 다른 두께 */
    }

 

 

border-color

- 테두리의 색상도 임의로 설정이 가능하다.

- 마찬가지로 top, bottom, right, left로 위치를 지정하고

- 원하는 컬러 (색상의 이름)를 설정하거나 RGB값이나 HTML컬러코드를 적는다

 

 

 .box-color {
      border-color: red green blue yellow; /* 상, 우, 하, 좌 각각 다른 색상 */
    }

border-style

- 테두리의 모양을 정해준다

- 점선, 실선, 이중선 등 몇 가지 스타일을 CSS에서 지원해준다

 .box-style {
      border-style: dashed; /* 테두리 스타일을 점선으로 설정 */
    }

 

 

속성 설명
hidden 테두리 감추기
dotted 점선
dashed 파선
solid 실선
double 이중선
groove 오목한 선
ridge 볼록한 선
inset 안쪽이 오목한 선
outset 안쪽이 볼록한 선

 

 

border-radius

- 테두리의 모서리를 둥글게 만들어 주는 속성이다

- 정사각형 모양의 content가 있다면 radius값을 50%로 주면 되는 것이다

 

.box-radius {
      border-radius: 20px; /* 모서리를 둥글게 설정 */
    }

 

Padding, Margin

- padding과 margin은 각각 border를 기준으로 한 여백을 의미한다

- padding의 경우 border 안 쪽, margin의 경우 border 바깥 쪽 여백을 의미한다

- 마찬가지로 방향을 정하고 px,pt,cm를 단위로 여백의 수치를 정한다

p{
	padding : 20px;
	margin: 5%;
}



 

box-shadow

- 박스에 그림자를 넣어주는 속성이다

- 그림자를 보여줄 수평 거리와 수직 거리 지정이 필수적이며 그 외에로 blur,spread,color,inset 등의 속성이 있다

이런식으로 표현이 가능하다

 

/* 기본 그림자 */
    .box-shadow-basic {
      box-shadow: 10px 10px 5px gray; /* 수평 거리, 수직 거리, 흐림 반경, 색상 */
    }

    /* 퍼진 그림자 */
    .box-shadow-spread {
      box-shadow: 10px 10px 5px 10px rgba(0, 0, 0, 0.5); /* 퍼짐 반경 추가 */
    }

    /* 안쪽 그림자 */
    .box-shadow-inset {
      box-shadow: inset 10px 10px 15px rgba(0, 0, 0, 0.3); /* inset: 안쪽 그림자 */
    }

 

 

box-sizing

- 요소의 크기 계산 기준을 정해주는 속성으로 width와 height만으로 요소의 크기를 계산할지 padding,border를 포함해서 계산할지를 정한다

- 기본값은 width,height 만으로 크기 계산을 하는 content-box 속성이 적용되어 있다

- 이해가 잘 안될 수도 있는데 간단히 얘기를 하면 결과적으로 content-box 속성은 크기 설정을 할 때 width, height만 고려하기 때문에 20px로 설정해둔 width, height 값에 더해 padding과 border를 더하기 때문에 실제 요소의 크기는 20px을 넘어갈 수가 있다

- border-box의 경우에는 마지막 최종 결과물이 20px이 나오도록 20px로 설정해둔 width, height에 맞춰 padding과 border의 크기가 설정되기 때문에 더 직관적이라고 볼 수 있다.

 

같은 100px크기라도 최종적으로 모양이 다르게 나온다

 

<style>
    .box1 {
      width: 100px;
      padding: 20px;
      background: pink;
    }

    .box2 {
      width: 100px;
      padding: 20px;
      box-sizing: border-box;
      background: skyblue;
    }
</style>
  
<body>
	<div class="box1">평범한 박스</div>
	<br>
	<div class="box2">border-box 박스</div>
</body>

 

 

outline

- 박스에 테두리를(border 아님) 설정한다

- outline의 크기, 모양 그리고 색상을 설정해줄 수 있다.

- border와의 차이점은 outline의 경우 박스 모델의 크기에 영향을 주지 않고 단순히 바깥에 테두리만 정해준다는 것이다

.element {
  outline: 3px dashed blue;  /* 파란색 점선 아웃라인 */
}

'웹프로그래밍 > CSS 3' 카테고리의 다른 글

CSS - Background와 Transition  (0) 2024.08.06
CSS - 레이아웃 속성과 flex  (0) 2024.08.05
CSS - 폰트 설정  (0) 2024.07.31
CSS - 선택자  (0) 2024.07.29
CSS - 기본 사용법  (0) 2024.07.26