웹 페이지에서 모든 HTML 요소가 차지하는 일정 공간을 의미합니다.
HTML 요소의 박스 모델은 Content
, Padding
, Border
, Margin
으로 구성되어 있습니다.
Content
: HTML 요소 내에 존재하는 내용
Padding
: 안쪽 여백
Border
: HTML 요소를 감싸는 테두리
Margin
: HTML 요소의 바깥쪽 여백
Content
크기를 변경하기 위해서 width
속성과 height
속성을 사용합니다.
width
: 가로 너비 지정
height
: 세로 너비 지정
단위 : px
, %
, viewport
등 가능
인라인 레벨 요소에는 width
, height
가 적용되지 않습니다. 왜냐하면 인라인 요소는 콘텐츠 만큼의 영역을 갖기 때문입니다. 만일 인라인 요소에 width
, height
를 변경하고자 하면 display: inline-block
으로 변경해야 합니다.
<span>
✍ 코드 (width
, height
적용되지 않는 경우)
<head>
<style>
span {
border: 1px solid red;
width: 100px;
height: 100px;
}
</style>
</head>
<body>
<span>Content</span>
</body>
👉 결과
✍ 코드 (width
, height
적용되는 경우)
<head>
<style>
span {
border: 1px solid red;
width: 100px;
height: 100px;
display: inline-block;
}
</style>
</head>
<body>
<span>Content</span>
</body>
👉 결과
padding-top
, padding-bottom
, padding-left
, padding-right
속성을 사용하여 각각 지정할 수 있습니다.
현업에서는 padding
을 3개로 표현하지 않습니다.
✍ 코드
padding: 10px;
/* 상하 좌우 */
padding: 10px 20px;
/* 위 좌우 아래 */
padding: 10px 5px 20px;
/* 위 오른쪽 아래 왼쪽 */
padding: 4px 6px 6px 4px;
padding-top: 20px;
margin-top
, margin-bottom
, margin-left
, margin-right
속성을 사용하여 각각 지정할 수 있습니다.✍ 코드
margin: 20px;
/* 상하 좌우 */
margin: 10px 20px;
/* 위 오른쪽 아래 왼쪽 */
margin: 4px 2px 2px 4px;
margin-top: 20px;
HTML 요소를 세로로 배치할 경우 margin
과 margin
이 만날 때 margin
값이 큰 쪽으로 겹쳐지는 것을 의미합니다.
요소를 가로로 배치할 경우에는 상관 없지만 세로로 배치할 경우에는 값이 큰 margin
만 적용됩니다.
✍ 코드
<head>
<style>
.shape {
border: 1px solid red;
width: 100px;
height: 100px;
margin: 20px;
}
</style>
</head>
<body>
<div class="shape"></div>
<div class="shape"></div>
</body>
👉 결과
마진 중첩 현상으로 인해 margin: 20px;
입니다.
✍ 코드
<head>
<style>
.shape {
border: 1px solid red;
width: 100px;
height: 100px;
margin: 20px;
}
</style>
</head>
<body>
<div class="shape" style="margin-bottom: 40px"></div>
<div class="shape"></div>
</body>
👉 결과
이처럼 인라인으로 지정하게 되면 우선순위로 margin-bottom: 40px
이 적용됩니다.
CSS 속성으로는 border
, border-style
, border-width
, border-color
가 있습니다.
border-style
✍ 코드
border-style: solid;
/* 위 오른쪽 아래 왼쪽 */
border-stlye: solid dotted dashed solid;
border-left-style: solid;
👉 결과
border-width
테두리 두께를 지정합니다.
값으로 <크기>
또는 키워드 thin
medium
thick
가 가능합니다.
✍ 코드
border-width: 1px;
/* 상하 좌우 */
border-width: thin thin;
/* 이 경우는 잘 사용하지 않음 */
border-width: thin medium thick;
/* 위 오른쪽 아래 왼쪽 */
border-width: 3px 5px 5px 3px;
border-left-width: 6px;
👉 결과
border-color
✍ 코드
border-coor: blue;
/* 상하 좌우 */
border-color: yellow red;
👉 결과
border
border-width
, border-style
, border-color
를 한꺼번에 사용할 수 있는 단축 속성입니다.✍ 코드
/* 두께 스타일 색 */
border: 3px solid yellow;
border: 2px dashed red;
👉 결과
border-radius
테두리 꼭짓점을 둥글게 만듭니다.
원형처럼 만들고자 할 때 border-radius: 50%;
사용합니다.
✍ 코드
border-radius: 20px;
border-radius: 10% 20%;
👉 결과
content-box
한 변의 길이가 140px
border 크기
+ padding 크기
+ 기본 content 크기 (width & height)
+ padding 크기
+ border 크기
= 한 변의 길이
✍ 코드
<head>
<style>
.content-box {
width: 100px;
height: 100px;
border: 10px solid red;
padding: 10px;
box-sizing: content-box;
}
</style>
</head>
<body>
<div class="content-box"></div>
</body>
border-box
한 변의 길이가 100px (width & height)
border 크기
+ padding 크기
+ 기본 content 크기
+ padding 크기
+ border 크기
= 한 변의 길이
✍ 코드
<head>
<style>
.border-box {
width: 100px;
height: 100px;
border: 10px solid blue;
padding: 10px;
box-sizing: border-box;
}
</style>
</head>
<body>
<div class="border-box"></div>
</body>
👉 결과
🧐 Box sizing을 border-box
로 하게 되면 HTML 크기를 정확히 알 수 있습니다.
Ex) viewport
가 500px일 때 HTML 태그 100px 5개를 선언하고자 하면 border-box
로 하게 되면 width: 100px;
만 하게 되면 가능합니다.