| position 속성 | |
|---|---|
| static | 상대 위치 좌표, 디폴트 |
| relative | 초기 위치에서 상하좌우로 이동 |
| absolute | 부모를 기준으로 절대 위치 좌표 |
| fixed | 화면을 기준으로 절대 위치 좌표 |
브라우저의 디폴트 배치 방식
top, bottom, left, right 속성 값은 적용 안 됨
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
<style>
div {
/* 기본 속성, static일 경우 이동 불가 */
position: static;
}
</style>
</head>
<body>
<div style="top: 100px">안녕하세요</div>
</body>
</html>
기본 위치에서 left, top, bottom, right 속성의 값만큼 이동한 상대 위치에 배치
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
<style>
div {
/* 원래 있던 위치에서 이동 */
position: relative;
}
</style>
</head>
<body>
<div style="top: 100px; left: 5em">안녕하세요</div>
</body>
</html>
| 속성 | |
|---|---|
| left | 왼쪽 모서리의 이동 거리 |
| top | 위쪽 모서리의 이동 거리 |
top/bottom가 동시 지정 시, bottom 무시
left/right가 동시 지정 시, right 무시

HTML 태그를 절대 위치에 배치
절대 위치는 left, top, bottom, right 속성 값으로 정함

절대값 기준으로 (100, 100)

relative를 준 parent2를 기준으로 (100, 100)

있을 경우에는 relative가 있는 부모를 기준으로 잡고, 아무데도 없을 시 브라우저의 절대값 (0, 0)을 기준으로 한다
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
<style>
/* * {
margin: 0;
padding: 0;
} */
.parent {
border: 3px solid blue;
/* relative 있는 위치 */
position: relative;
}
.parent2 {
border: 3px solid green;
}
.child {
border: 3px solid red;
position: absolute;
top: 0px;
left: 0px;
}
</style>
</head>
<body>
<div class="parent">
parent
<div class="parent2">
parent2
<div class="child">child</div>
</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
<style>
#fixed {
background-color: red;
color: white;
/* background-attachment처럼 fixed하면 스크롤해도 그대로 따라옴 */
position: fixed;
bottom: 20px;
right: 100px;
width: 120px;
padding: 5px;
}
</style>
</head>
<body>
<h3>Merry Christmas!</h3>
<hr />
<img src="../medias/christmastree.png" width="300" height="300" alt="크리스마스 트리" />
<div id="fixed">메리크리스마스!</div>
</body>
</html>HTML 태그들을 z축에 따라 수직으로 쌓는 순서를 지정
속성 값이 클수록 위에 쌓임
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
<style>
.box {
width: 100px;
height: 100px;
position: absolute;
}
/* model1이 최상단으로 올라옴 */
.model1 {
background-color: red;
top: 10px;
left: 10px;
z-index: 100;
}
.model2 {
background-color: green;
top: 50px;
left: 50px;
z-index: 10;
}
.model3 {
background-color: blue;
top: 90px;
left: 90px;
z-index: 1;
}
</style>
</head>
<body>
<div class="box model1"></div>
<div class="box model2"></div>
<div class="box model3"></div>
</body>
</html>
내부 요소의 부모의 범위를 벗어날 때 요소를 처리하는 방법
블록 태그에만 적용
| overflow 속성 | |
|---|---|
| visible | 내용이 잘리지 않고 영역을 넘어 출력, 디폴트 |
| hidden | 영역을 벗어나는 부분을 숨김 |
| scroll | 무조건 스크롤 생성 |
| auto | 내용이 부모 영역을 넘어가면 자동으로 스크롤 생성 |
| | 키워드 |
| --- | --- |
| left | 태그를 왼쪽에 붙이기 |
| right | 태그를 오른쪽에 붙이기 |