티스토리 뷰

CSS

position / z-index

정낭고 2023. 6. 1. 16:55

《 position 》

 태그 종류: relative / absolute / fixed / sticky

 기본값: static

 각각의 기준으로 배치: left, right, top, bottom

 기준을 정할 때 사용하는 태그: relative

 억지로 움직여야 할 때 사용하는 태그: absolute

 기준 위치에서 안쪽으로 이동하면 양수

 기준 위치에서 바깥쪽으로 이동하면 음수

 

# relative

 기준이 자기 자신 (= 원래 위치)

⇨ 기준을 정할 때 설정!

❑ 가상으로 이동 (= 실체 이동X)

 left / right / top / bottom에서 민다고 생각하기

.relative{
        position: relative;
        top: 50px;
        /* top: -100px; */
        /* margin-top:100px; */
        /* margin: 실제로 공간을 만들거나 없애면서 이동하는 방법 */
}
.relative:hover{
        top: -20px;
}

 margin 태그를 주게 되면 뒤에 따라오는 요소까지 같이 움직임

➡ top: 50px (= 기준 위치의 위쪽에서 50px만큼 밀어 이동 시키기)

➡ top: -100px (= 기준 위치의 위쪽 바깥으로 -100px만큼 밀어 이동 시키기)

➡ hover 태그를 준 클래스가 마우스를 올리면 기준 위치의 위쪽 바깥으로 -20px 이동되어 나타남

 

# absolute

 가까운 부모중에 position 속성의 값이 기본값이 아닌 요소

 억지로 움직여야 할 때 사용!

⇨ 기본값이 없으면 body가 기준

 안의 내용 크기로 줄어듬

 다른 요소들이 absolute를 인지하지 못함 

 붕 떠 있는 상태라 말함

 

# fixed

 전체 화면을 기준으로 고정

 안의 내용 크기로 줄어듬

 다른 요소들이 인지하지 못함

➡ 오른쪽 하단의 TOP이 스크롤을 내려도 화면에 고정되어 있음

 

# sticky

❑  스크롤을 내리면 지정한 위치에 껌처럼 붙어 고정

⇨ fixed와 다르게 스크롤과 함께 움직이다가 지정한 위치에 도달하면 고정

.sticky {
		padding: 20px;
		width: 170px;
		position: sticky;
		top:0;
}

 top: 0; 위치에 도달하면 고정


《  z-index 》

 비교 대상은 반드시 포지션이 있어야 함

 비교 대상과 포지션 값이 달라도 우열을 가릴 수 있음

 하나라도 포지션이 없으면 우열을 가릴 수 없음

 자식의 값보다 부모의 값이 제일 우선

 비교대상 A의 자식이 높은 값을 가져도 비교대상 B의 부모 값이 A의 부모 값보다 높으면 이길 수 없음

 

<실행 결과>

<!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>Z-index</title>
    <style>
        .parent {
            width: 200px;
            height: 200px;
            background: #ccc;
            position: relative;
            z-index: 2;
        }
        .siblings {
            width: 200px;
            height: 100px;
            background: green;
            position: relative;
            top: -50px;
            left: 50px;
            z-index: 1;
        }
        div[class^="child"] {
            width: 100px;
            height: 100px;
            border: 1px solid;
            text-transform: uppercase;
            font-weight: bold;
        }
        .child1 {
            background: blue;
            color:#fff;
            position: relative;
            z-index: 1;
        }
        .child2 {
            background: red;
            position: relative;
            top: -30px;
            left: 30px;
            z-index: 10;
        }
        .child3 {
            background: #fff;
            z-index: 20;
            position: relative;
        }
    </style>
</head>
<body>
    <div class="parent">
        <div class="child1">child 1</div>
        <div class="child2">child 2</div>
    </div>
    <div class="siblings">
        <div class="child3">child 3</div>
    </div>
</body>
</html>

 

 child3 클래스가 child2 클래스보다 높은 값을 가져도

부모(siblings)의 값이 비교 대상의 부모(parent) 값보다 작기 때문에 이길 수가 없음

 

 

 

 

 

calc(100% + 10px)

: 괄호안을 수치로 써라

공백 꼭 두기

단위 꼭 쓰기

'CSS' 카테고리의 다른 글

transform / Loading / aside animation  (0) 2023.06.01
shadow / gradient / transition / animation  (0) 2023.06.01
float  (0) 2023.06.01
display / overflow / background  (0) 2023.06.01
우선 순위 / font & text / vertical-align / list Style  (0) 2023.06.01
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함