| 속성 지정 | |
|---|---|
| 부모 | overflow:hidden 속성 지정 |
| 자식 | float 속성 지성 |
원하는 너비를 먼저 지정
마진값은 0 auto (상하, 좌우)
- auto를 주면 사이즈를 알아서 측정해서 값을 줌
| 속성 | 값 |
|---|---|
| width | 원하는 너비 값 입력 |
| margin | 0 auto |


<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body>
<!-- 레이아웃 행 구성 후 열 구성 -->
<div id="top"></div>
<div id="middle">
<div id="left"></div>
<div id="right"></div>
</div>
<div id="bottom"></div>
</body>
</html>
부모 태그에 고정된 너비를 입력
수평 정렬하는 부모 태그의 overflow 속성에 hidden을 적용
자손 태그에 적당한 너비를 입력하고 float 속성을 적용
부모 태그에 overflow:hidden이 없을 시
footer가 원하는 것처럼 밑으로 가지 않고 옆에 붙음(float을 상속받았기 때문)

<style>
/* 전체 초기화 */
* {
margin: 0;
padding: 0;
}
body {
width: 1200px;
margin: 10px auto;
}
#top {
background: coral;
}
#middle {
overflow: hidden;
}
#left {
float: left;
width: 150px;
background: deeppink;
}
#right {
float: left;
width: 350px;
background: powderblue;
}
#bottom {
background: plum;
}
</style>

#middle에 overflow:hidden 대신 #bottom에 clear 속성을 적용해도 됨
<style>
* {
margin: 0;
padding: 0;
}
body {
width: 1200px;
margin: 10px auto;
}
#top {
background: coral;
}
#middle {
width: 100%;
}
#left {
float: left;
width: 20%;
background: deeppink;
}
#right {
float: left;
width: 80%;
background: powderblue;
}
#bottom {
background: plum;
/* clear 속성은 문제가 되는 당사자에게 지정 */
/* clear: 상속값 없애기 */
/* 맨 위에 있는 태그가 float:left를 가지고 있으면 clear:left */
/* 맨 위에 있는 태그가 float:right를 가지고 있으면 clear:right */
/* both를 더 많이 쓰는 이유는 left를 썼는지 right를 썼는지 찾을 필요 없이 적용할 수 있음 */
clear: both;
}
</style>
| 속성 | |
|---|---|
| 부모 | position:relative |
| 자식 | position:absolue |
| 속성 | 값 |
|---|---|
| position | absolute |
| left | 50% |
| top | 50% |
| margin-left | 음수 |
|---|---|
| margin-top | 음수 |
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
background: yellow;
}
h3 {
width: 500px;
height: 250px;
background: red;
position: absolute;
left: 50%;
top: 50%;
/* 태그의 width와 height의 절반값을 음수로 입력하여 중앙 정렬 */
margin-left: -250px;
margin-top: -125px;
}
</style>
</head>
<body>
<div id="container">
<h3>절대 위치를 사용하여 요소를 중앙 배치</h3>
</div>
</body>
</html>| 속성 | 값 | 속성 | 값 |
|---|---|---|---|
| position | fixed | right | 위치 값 |
| left | 위치 값 | bottom | 위치 값 |
| top | 위치 값 | width | 너비 값 |
| height | 높이 값 |
| 속성 값 | 설명 |
|---|---|
| normal | 여러 개의 공백과 줄 바꿈을 하나의 공백으로 표시(디폴트) |
| nowrap | normal과 같지만 가로 폭의 범위를 넘어서면 줄 바꿈을 하지 않고 박스를 벗어나서 표시 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
h1,
p {
width: 300px;
border: 1px solid red;
}
.ellipsis {
white-space: nowrap;
overflow: hidden;
/* 넘어가는 글자 ...으로 표시 */
text-overflow: ellipsis;
}
</style>
</head>
<body>
<h1 class="ellipsis">한 행을 넘어가는 글자를 자동으로 생략하는 기능</h1>
<p class="ellipsis">300px의 너비를 넘어가는 글자는 ...으로 처리</p>
</body>
</html>

| 태그 | 설명 |
|---|---|
table | 표 전체를 담는 컨테이너 |
caption | 표 제목 |
thead | 표의 머리(head) 생성 |
tbody | 표의 본문(body) 생성 |
tfoot | 표의 꼬리(foot) 생성 |
tr | 행(row), 여러 th, td를 포함 |
td | 데이터 셀 생성 |
th | 열(column) 제목 셀 생성 |
tr: 한 줄td: 한 칸tr … /trthtdthead, tbody, tfoottr 포함 가능
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
<style>
table {
border: 3px solid red;
}
td {
border: 3px solid skyblue;
}
</style>
</head>
<body>
<h1>표에 이미지 넣기</h1>
<hr />
<table>
<caption>
좋아하는 과일
</caption>
<tr>
<td><img src="../medias/apple.png" /></td>
<td><img src="../medias/banana.png" /></td>
<td><img src="../medias/mango.png" /></td>
</tr>
</table>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
<style>
table {
border: 1px solid black;
/* border-collapse: 테두리가 두 줄로 나오는 걸 방지 */
border-collapse: collapse;
}
td {
border: 1px solid black;
}
</style>
</head>
<body>
<table>
<tr>
<!-- rowspan="병합할 칸 개수" -->
<!-- 1행 1열과 2행 1열 병합 -->
<td rowspan="2">1행 1열</td>
<td>1행 2열</td>
<td>1행 3열</td>
</tr>
<tr>
<!-- 병합할 셀을 지워줘야 값이 제대로 나옴 -->
<!-- <td>2행 1열</td> -->
<td>2행 2열</td>
<td>2행 3열</td>
</tr>
<tr>
<td>3행 1열</td>
<td>3행 2열</td>
<td>3행 3열</td>
</tr>
</table>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
<style>
table {
border: 1px solid black;
/* border-collapse: 테두리가 두 줄로 나오는 걸 방지 */
border-collapse: collapse;
}
td {
border: 1px solid black;
}
</style>
</head>
<body>
<table>
<tr>
<td rowspan="2">1행 1열</td>
<!-- colspan="병합할 칸 개수" -->
<!-- 1행 2열과 1행 3열 병합 -->
<td colspan="2">1행 2열</td>
<!-- colspan으로 병합할 값 지움 -->
<!-- <td>1행 3열</td> -->
</tr>
<tr>
<td>2행 2열</td>
<td>2행 3열</td>
</tr>
<tr>
<td>3행 1열</td>
<td>3행 2열</td>
<td>3행 3열</td>
</tr>
</table>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
<style>
table {
border: 1px solid black;
border-collapse: collapse;
}
td {
border: 1px solid black;
}
</style>
</head>
<body>
<table>
<tr>
<td colspan="4">첫번째</td>
</tr>
<tr>
<td rowspan="2">두번째</td>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<!-- <td>두번째 rowspan으로 인해 삭제</td> -->
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>세번째</td>
<td rowspan="2">7</td>
<td>8</td>
<td>9</td>
</tr>
<tr>
<td>네번째</td>
<!-- <td>7 rowspan으로 인해 삭제</td> -->
<td>10</td>
<td>11</td>
</tr>
<tr>
<td>다섯번째</td>
<td>12</td>
<td colspan="2" rowspan="2">마지막</td>
<!-- <td>마지막 colspan으로 인해 삭제</td> -->
</tr>
<tr>
<td>여섯번째</td>
<td>13</td>
<!-- <td>마지막 rowspan으로 인해 삭제</td> -->
<!-- <td>마지막 colspan rowspan으로 인해 삭제</td> -->
</tr>
</table>
</body>
</html>
