
특징
한 줄을 전부 차지하며, 자동으로 줄 바꿈이 됨- 너비를 조정할 수 있으며 기본적으로 부모 요소의 전체 너비(100%)를 차지함.
- 상하 마진을 지원하여 요소 사이에 간격을 둘 수 있음.
- 일반적으로 큰 단락을 구성하는 데 사용되어 레이아웃 구조를 형성함.
대표적인 블록 레벨 요소
<div>: 가장 일반적인 블록 컨테이너로, 레이아웃을 만들 때 사용<p>: 단락을 나타내는 요소로, 본문 텍스트를 구성할 때 사용<h1> ~ <h6>: 제목 요소로, 각기 다른 크기를 나타냄<ul>, <ol>, <li>: 목록을 구성하는 요소들<header>, <footer>, <nav>, <section>, <article>: HTML5에서 추가된 레이아웃을 구성하는 요소들
...
<title>블록 레벨과 인라인 레벨</title>
<style>
body * {
/* body 하위에 있는 모든 요소에 대해 */
/* 블록 요소들이 차지하고 있는 부분들을 시각화 하기 위해 */
border: 1px solid blue;
}
.accent {
color: red;
font-weight: bold;
}
</style>
</head>
<body>
<h1>시간이란...</h1>
<div>내일 죽을 것처럼 <p class="accent">오늘</p>을 살고 </div>
<p>영원히 살 것처럼 <br>내일을 꿈꾸어라. </p>
</body>
</html>

특징
한 줄에 여러 요소가 나란히 배치될 수 있으며, 자동 줄 바꿈이 일어나지 않음- 기본적으로 콘텐츠의 너비만큼만 차지하며, 높이와 너비를 지정해도 반영되지 않음.
- 인라인 레벨 요소는 블록 레벨 요소 안에 포함될 수 있으며, 주로 텍스트와 함께 사용됨.
- 상하 마진은 적용되지 않고 좌우 마진만 적용.
대표적인 인라인 레벨 요소
<span>: 스타일링이나 텍스트 구분을 위해 사용되는 범용 인라인 컨테이너.<a>: 하이퍼링크를 설정하는 요소<img>: 이미지를 삽입하는 요소<strong>, <em>, <b>, <i>: 텍스트를 굵게하거나 기울이는 등, 스타일링을 위한 요소.<input>, <label>: 폼 입력 요소와 그 라벨
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>블록 레벨과 인라인 레벨</title>
<style>
body * { /* body 하위에 있는 모든 요소에 대해 */
border:1px solid blue;
}
.accent {
color:red;
font-weight:bold;
}
</style>
</head>
<body>
<h1>시간이란...</h1>
<div>내일 죽을 것처럼 <span class="accent">오늘</span>을 살고 </div>
<p>영원히 살 것처럼 <br>내일을 꿈꾸어라. </p>
</body>
</html>

요소의 레이아웃을 구성하는 CSS의 핵심 개념으로 콘텐츠(content), 패딩(padding), 테두리(border), 마진(margin) 영역으로 구성
요소의 콘텐츠 영역 크기를 설정하는 속성| 종류 | 설명 |
|---|---|
| <크기> | 너비나 높이의 값을 px이나 em 단위로 지정함. |
| <백분율> | 박스 모델을 포함하는 부모 요소를 기준으로 너비값이나 높이값을 백분율(%)로 지정함. |
| auto | 박스 모델의 너비값과 높이값이 콘텐츠 양에 따라 자동으로 결정됨. (기본값) |
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>박스모델</title>
<style>
div {
border: 1px solid #000;
margin: 50px 20px;
/* margin-bottom: 20px; */
/* bottom 50, top 30 일 경우에는 50으로 잡힘 (겹쳐질 때 큰 값으로 잡힘) */
}
/* 박스 모델의 너비와 높이 지정하기 */
.box1 {
width:650px; /* 고정 너비 */
height:100px; /* 고정 높이 */
}
.box2 {
width:70%; /* 가변 너비 */
height:75px; /* 고정 높이 */
}
</style>
</head>
<body>
<div class="box1">Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis, dignissimos. Impedit perferendis fugiat facere molestiae!</div>
<div class="box2">Lorem ipsum dolor sit amet consectetur adipisicing elit. Pariatur laboriosam ullam, excepturi vitae ratione quos.</div>
</body>
</html>

이 값이 커질수록 부드러운 그림자를 표시하며, 음수값은 사용 불가안쪽 그림자로 그려짐....
<title>박스모델</title>
<style>
.button-1 {
font-size: 2em;
background: #fff;
padding:15px 30px;
margin:15px;
border: 1px solid #222;
/* 박스 모델에 그림자 추가하기 */
/* 오른쪽 아래에 그림자 효과*/
box-shadow: 2px 2px 5px 5px #475AFF;
margin-right: 40px;
}
.button-2 {
border: 1px none black;
border-radius: 15px;
padding: 30px 50px;
font-family: Arial, Helvetica, sans-serif;
font-size: 20px;
box-shadow: 0px 0px 15px 10px rebeccapurple;
background-color: aqua
}
</style>
</head>
<body>
<div>
<button class="button-1">Hello</button>
<button class="button-2">Buy</button>
</div>
</body>
</html>

방향 순서를 지켜야 함.
기본 값이 none → 화면에 테두리 표시안됨
테두리를 그리기 위해서는 맨 먼저 테두리 스타일부터 지정
기본형 : border-style : none | hidden | dashed | dotted | double | groove | inset | outset | ridge | solid
| 종류 | 설명 |
|---|---|
| none | 테두리 없음 (기본값) |
| solid | 테두리를 실선으로 표시 |
| dotted | 테두리를 점선으로 표시 |
| dashed | 테두리를 짧은 직선으로 표시 |
| double | 테두리를 이중선으로 표시 |
| groove | 테두리를 창에 조각한 것처럼 표시 |
| ridge | 테두리를 창에서 튀어나온 것처럼 표시 |
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>박스모델</title>
<style>
div {
width:200px;
height:100px;
display:inline-block;
margin:15px;
text-align: center;
font-size:20px;
/* 가운데 정렬 */
line-height:100px;
border-width:5px; /* 테두리 굵기 */
}
/* 테두리 스타일 지정하기 */
/* 실선 */
.box1 {
border-style: solid;
}
/* 점선 */
.box2 {
border-style: dotted;
}
/* 짧은 점선 */
.box3 {
border-style: dashed;
}
</style>
</head>
<body>
<div class="box1">실선 테두리 </div>
<div class="box2">점선 테두리 </div>
<div class="box3">점선 테두리</div>
</body>
</html>

테두리 두께 지정<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>박스모델</title>
<style>
div {
width:200px;
height:100px;
display:inline-block;
margin:15px;
border-style:solid; /* 테두리 스타일 - 실선 */
}
/* 테두리 두께 지정하기 */
.box1 {
border-width: 5px; /* 네 방향 모두 2px */
}
.box2 {
border-width: thick tㅔ hin; /* top & bottom - thick, left & right - thin */
}
.box3 {
border-width:thick thin thin thin; /* top - thick, right - thin, bottom - thin, left - thin */
}
.box4 {
border-width:10px 5px 5px 10px; /* top - 10px, right - 5px, bottom - 5px, left - 10px */
}
</style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
<div class="box4"></div>
</body>
</html>

테두리 색상 지정
코드 예시 )
...
<title>박스모델</title>
<style>
div {
width:200px;
height:100px;
display:inline-block;
margin:15px;
border-style:dashed; /* 테두리 스타일 - 선으로 된 점선 */
border-width:5px; /* 테두리 굵기 - 2px */
}
/* 박스 모델의 테두리 색상 지정하기 */
.box1 {
/* 전체 테두리 - 빨강 */
border-color: red;
}
.box2 {
/* 위쪽 테두리 - 파랑 */
border-top-color: blue;
/* 왼쪽 테두리 - 빨강 */
border-left-color: red;
/* 하단 테두리 - 초록 */
border-bottom-color: green;
}
</style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
</body>
</html>

테두리 스타일과 두께, 색상 등을 묶어 표기<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>박스모델</title>
<style>
/* 테두리 스타일 묶어서 지정하기 */
h1 {
padding: 10px 0px;
border-bottom: 3px solid blue; /* 아래쪽 테두리만 3px짜리 파란 실선*/
border-top: 3px solid red; /* 위쪽 테두리만 3px짜리 빨강 실선 */
}
p {
padding: 10px;
border: 5px dotted blue; /* 모든 테두리를 3px짜리 파란 점선 */
}
</style>
</head>
<body>
<h1>박스 모델</h1>
<p>박스 모델은 실제 콘텐츠 영역, 박스와 콘텐츠 영역 사이의 여백인 패딩(padding), 박스의 테두리(border), 그리고 여러 박스 모델 간의 여백인 마진(margin) 등의 요소로 구성되어 있습니다. </p>
</body>
</html>

박스 모델의 테두리를 둥글게 처리

...
<title>박스모델</title>
<style>
/* 이미지 꼭짓점을 둥글게 처리하기 */
.round {
/* 네 방향 꼭짓점을 둥글게 */
border-radius: 25px;
}
</style>
</head>
<body>
<img src="images/cat.jpg">
<img class="round" src="images/cat.jpg">
</body>
</html>

...
<title>박스모델</title>
<style>
/* 이미지를 원형으로 표시하기 */
.circle {
/* 테두리를 원으로 */
border-radius: 50%;
}
</style>
</head>
<body>
<img src="images/photo.jpg">
<img class="circle" src="images/photo.jpg">
</body>
</html>

...
<title>박스모델</title>
<style>
div {
width:200px;
height:150px;
border: 2px solid blue;
}
/* 원하는 꼭짓점만 둥글게 처리하기 */
.corner {
/* 왼쪽 위 꼭짓점만 둥글게 */
border-top-left-radius: 20px;
/* 오른쪽 위 꼭짓점만 둥글제 */
border-top-right-radius: 10px;
}
</style>
</head>
<body>
<div class="corner"></div>
</body>
</html>
