offset
(top, bottom, left, right)과 함께 사용하여 위치를 지정e.g.
.class {
position: absolute;
top: 50%;
right: auto;
bottom: -10px;
left: 10px;
}
기본적인 요소의 배치 순서
로 배치되며 부모 요소 내에 자식 요소로서 존재할 때는 부모 요소의 위치를 기준으로 배치된다..box {
color: white;
border-radius: 6px;
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
.parent {
border: 1px dashed #aaa;
padding: 10px;
}
.child {
background-color: red;
}
.sibling {
background-color: orange;
}
<div class='parent'>
<div class="box sibling">sibling</div>
<div class="box child">child</div>
<div class="box sibling">sibling</div>
</div>
static인 위치를 기준
으로 offset (top, bottom, left, right)에 따라 배치된다..box {
color: white;
border-radius: 6px;
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
.parent {
border: 1px dashed #aaa;
padding: 10px;
}
.sibling {
background-color: orange;
}
.child {
position: relative; /*추가*/
background-color: red;
left: 100px; /*추가*/
}
<div class='parent'>
<div class="box sibling">sibling</div>
<div class="box child">child</div>
<div class="box sibling">sibling</div>
</div>
부모 요소의 위치를 기준
으로 offset 에 따라 배치된다.부모가 position 값(static 제외)을 가지면
offset 값의 시작점이 된다..box {
color: white;
border-radius: 6px;
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
.parent {
border: 1px dashed #aaa;
padding: 10px;
position: relative; /*추가*/
}
.sibling {
background-color: orange;
}
.child {
position: absolute; /*추가 */
background-color: red;
top: 0px; /*추가 */
left: 100px; /*추가 */
}
<div class='parent'>
<div class="box sibling">sibling</div>
<div class="box child">child</div>
<div class="box sibling">sibling</div>
</div>
부모의 padding 영역부터 시작한다.
child
가 sibling
이랑 겹치는 이유는 parent에 padding이 있기 때문이다. ( +10을 추가시켜주면 정상 )부모 요소와 관계없이 브라우저의 viewport를 기준
으로 offset 에 따라 배치.box {
color: white;
border-radius: 6px;
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
.parent {
border: 1px dashed #aaa;
padding: 10px;
position: relative; /*추가*/
}
.sibling {
background-color: orange;
}
.child {
position: fixed;
background-color: red;
top: 0px; /*추가 */
left: 0px; /*추가 */
}
<div class='parent'>
<div class="box sibling">sibling</div>
<div class="box child">child</div>
<div class="box sibling">sibling</div>
</div>
position 값이 static이 아닌 경우
지정가능.box {
color: white;
border-radius: 6px;
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
opacity: 0.7;
}
.parent {
position: relative;
}
.child {
position: absolute;
}
.child:nth-of-type(1){
background-color: red;
top: 0px;
left: 0px;
}
.child:nth-of-type(2) {
background-color: blueviolet;
top: 50px;
left: 50px;
}
.child:nth-of-type(3) {
background-color: orange;
top: 100px;
left: 100px;
}
<div class='parent'>
<div class="box child">child</div>
<div class="box child">child</div>
<div class="box child">child</div>
</div>
없는 경우
있는 경우
.child:nth-of-type(2) {
z-index: 100;
}
/* child 클래스 두번째 요소에 z-index 추가 */