들어가기 전에
요소의 레이아웃을 설정하는 대표적인 속성은 position 속성입니다.
position은 요소의 위치를 원하는 곳으로 이동할 수 있게 합니다.
position을 사용하기 위해서는 요소를 이동시키기 위한 좌표 속성인 offset에 대해서도 알아야 합니다.
position과 offset 속성을 잘 활용하면 더 다양하고 화려한 레이아웃을 구현할 수 있습니다.
핵심키워드
- position
- offset
학습하기
들어가기 전에
요소의 레이아웃을 설정하는 대표적인 속성은 position 속성입니다.
position은 요소의 위치를 원하는 곳으로 이동할 수 있게 합니다.
position을 사용하기 위해서는 요소를 이동시키기 위한 좌표 속성인 offset에 대해서도 알아야 합니다.
position과 offset 속성을 잘 활용하면 더 다양하고 화려한 레이아웃을 구현할 수 있습니다.
핵심키워드
학습하기
position 속성
요소의 위치를 정하는 방법을 지정하는 속성입니다.
기본 값 : static
position: static | absolute | fixed | relative | sticky | initial | inherit;
< 속성 값 >
static | Normal-flow 에 따라 배치되며 offset 값이 적용되지 않는다. (기본값) |
absolute |
|
fixed |
|
relative |
|
offset(top/left/bottom/right)
top|bottom|left|right: auto|length|initial|inherit;
top: 50%;
left: 10px;
bottom: -10px;
right: auto;
코드실습
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>position</title>
<style>
.sibling {
padding: 5px;
background-color: #eee;
text-align: center;
}
.parent {
border: 1px dashed #aaa;
padding: 10px;
}
.child,
.child_offset {
width: 60px;
height: 60px;
padding: 20px;
background-color: #dc3636;
text-align: center;
color: #fff;
font-weight: bold;
border: 1px solid #333;
}
.child_offset {
background-color: #3677dc;
}
.static {
position: static;
}
.relative {
position: relative;
}
.static {
position: static;
}
.absolute {
position: absolute;
}
.fixed {
position: fixed;
}
</style>
</head>
<body>
<h1>position (Offset 미지정)</h1>
<h2>static (기본)</h2>
<div class="parent">
<div class="sibling">Sibling 1</div>
<div class="child static">static</div>
<div class="sibling">Sibling 2</div>
</div>
<h2>relative</h2>
<div class="parent">
<div class="sibling">Sibling 1</div>
<div class="child relative">relative</div>
<div class="sibling">Sibling 2</div>
</div>
<h2>absolute</h2>
<div class="parent">
<div class="sibling">Sibling 1</div>
<!-- absolute, fixed는 inline요소일때 display:block으로 변경시킴. inline-block 값을 임의 지정했을 때는 그 값을 유지함. -->
<span class="child absolute">absolute</span>
<div class="sibling">Sibling 2</div>
</div>
<h2>fixed</h2>
<div class="parent">
<div class="sibling">Sibling 1</div>
<!-- 현재 fixed는 offset값이 없어 뷰포트 밖으로 밀려나오면서 화면 아래로 사라짐 -->
<div class="child fixed">fixed</div>
<div class="sibling">Sibling 2</div>
</div>
<h1>position (Offset 지정)</h1>
<h2>static - </h2>
<div class="parent">
<div class="sibling">Sibling 1</div>
<div class="child_offset static" style="top: 40px; right: 40px;">static <br>top: 40, left: 40</div>
<div class="sibling">Sibling 2</div>
</div>
<h2>relative</h2>
<div class="parent">
<div class="sibling">Sibling 1</div>
<div class="child_offset relative" style="top: 40px; left: 40px;">relative <br>top: 40, left: 40</div>
<div class="sibling">Sibling 2</div>
</div>
<h2>absolute - parent relative</h2>
<div class="parent relative">
<div class="sibling">Sibling 1</div>
<div class="child_offset absolute" style="top: 40px; left: 80px;">absolute<br>top: 40, left: 80</div>
<div class="sibling">Sibling 2</div>
</div>
<h2>fixed</h2>
<!-- 부모가 fixed여도 별개로 위치함 -->
<div class="parent">
<div class="sibling">Sibling 1</div>
<div class="child_offset fixed" style="top:100px;left:80%;">fixed<br>top:100, left:80%</div>
<div class="sibling">Sibling 2</div>
</div>
</body>
</html>
생각해보기
참고자료
https://www.w3schools.com
https://developer.mozilla.org