- 포지셔닝
- 기본적으로 박스는 문서의 일반 흐름 순서대로 배치되는데(기본값인 static), 박스간 마진병합 현상이 일어난다 ← 여기서는 좌표값은 사용할 수 없고, 플로팅에 의한 좌우 배치만 가능하다!
-
1.
position: relative;는 문서의 일반 흐름대로 배치하되, 좌표값을 써서 일반 흐름상의 원래 위치로부터 (요소 자신을)상대적으로 (양수는 오른쪽 및 아래쪽 방향으로, 음수는 그 반대 방향으로)이동시키고, 다른 요소와 겹치도록 만들 수 있다 -
2-1.
position: absolute;는 요소를 문서의 기본 흐름에서 벗어나 (가장 가까운 컨테이닝 블록의 좌상단을 기준으로 하는)좌표값을 써서 배치한다 ← 이때, 특정 상위 부모요소에서position: relative;로 설정해주면(곧, 컨테이닝 블록으로 지정해주면); 그 부모요소를 기준으로 하는 절대 위치에 자리잡게 되는 것이다! - 2-2. absolute는 부모 요소의 영역에 겹쳐서 배치되므로, 위쪽에 배치된 요소가 아래쪽 문단(위 문단이 빠진 자리로 올라가서 자리잡게 된다!)과 겹쳐지는 것을 막으려면; 위쪽 요소(예컨대 위 코드의 <h5>)에서 그에 맞게 적절한 패딩을 주어야 한다!
-
3.
position: fixed;는 화면 스크롤과 무관하게 뷰포트의 현재 위치에 고정한다 - 문서의 흐름과 무관하게 좌표값을 써서 원하는 위치에 배치하는데, 그 기준은 body가 된다
* 우선, 이 예제를 통해 포지셔닝 개념에 대한 개괄적 감을 잡아보십시오..
(초기 모습은 기본값인 Static 상태입니다)
Relative와 Absolute에 관해서는 밑에서 참조하십시오..
여기 있지롱 ~
☞
참고로, 위 옵션 중 Fixed의 모습은 화면 우측 상단에서 찾아보시고(스크롤해도 그 자리에 고정됨),
Sticky는 (처음엔 초기 모습과 같지만)화면을 위로 스크롤하여
뷰포트 상단에 이르면 작동됩니다!
p1
p2 position: relative; top:50px; left:50px;
☞
position: relative; top: 50px; left: 50px;는
(요소 자체가 윈래 나타나야 할 위치에서 상대적으로)위로부터 50px,
좌측으로부터 50px 떨어져서 배치된다!
h5
position: absolute;는 요소를 문서의 기본 흐름에서 벗어나
(가장 가까운 부모요소의 좌상단을 기준으로 하는)좌표값을 써서 배치한다.
이때, 상위 부모요소에서 position: relative;로 설정해주면;
그 부모요소를 기준으로 하는 절대 위치에 자리잡게 되는 것이다!
☞ 아래쪽 문단 ← 위쪽에 생겨난 빈 공간으로 끌어올려지게 된다!
☞
position: absolute;는 요소를 문서의 기본 흐름에서 벗어나
(가장 가까운 컨테이닝 블록의 좌상단을 기준으로 하는)좌표값을 써서 배치하며,
이에 해당 요소 주변의 모든 컨텐츠는 해당 요소가 남긴 나머지 공간을 채우도록 재배치된다!
h5
position: absolute;는 요소를 문서의 기본 흐름에서 벗어나
(가장 가까운 부모요소의 좌상단을 기준으로 하는)좌표값을 써서 배치한다.
이때, 상위 부모요소에서 position: relative;로 설정해주면;
그 부모요소를 기준으로 하는 절대 위치에 자리잡게 되는 것이다!
☞ 아래쪽 문단 ← 위쪽에 생겨난 빈 공간으로 끌어올려지게 된다!
☞
위 코드는 부트스트랩의 패딩 유틸리티를 써서 <h5> 요소에 아래쪽 패딩을 주었다:
<h5 class="pb-5">h5<h5>
* cf)
특정 요소에 position: relative; 값을 추가하면;
position: absolute; 값을 가진 모든 자식요소의 컨테이닝 블록이 된다.
이는, 자식요소에 position: absolute; 값이 적용되는 경우;
기존의 상위 부모요소 대신 이 relative 요소 아래로 재배치됨을 의미한다!
✓ 이러한 특성은, 일반 흐름에서 요소를 완전히 제거하고, 대신 컨테이닝 블록의 가장자리(좌상단 모서리)로부터의 오프셋을 사용하여 요소를 배치할 때(예컨대, 화면 밖에 숨어 있지만, 버튼을 클릭하여 나타나고 사라지는 패널창 등)에 유용하게 사용된다!
Position: fixed;
/* ---
.h5-fixed {
position: fixed; top: 0px; right: 120px; background-color: transparent;
}
*/
☞ 여기서는 위 Css 스타일을 잠시 잠궈뒀습니다(풀어주면; 스크롤 시 우측 상단에 고정된 채 계속 떠있으면서 시선을 혼란스럽게 하기에 ㅡㅡ;) ← 위 Css의 주석을 풀어주고 스타일시트에 추가하여 결과를 확인해보십시오..
* cf)
이는 컨텐츠가 스크롤될 때도, 항상 화면의 같은 위치에서 떠다니는 탐색 메뉴창,
메시지창, 광고창 등을 만드는 데 유용하게 사용된다.
예컨대, 웹페이지 탐색 시 상단 내비게이션바나 하단 바닥글, 좌우측 사이드바 등이
고정되어 있는 경우를 흔히 접하게 되는데, 이러한 각 방면 고정바는
position: fixed; 속성과 박스 좌표, 너비(및 높이) 값을 써서 만들게 된다