게시글

5만명이 선택한 평균 별점 4.9의 제로초 프로그래밍 강좌! 로드맵만 따라오면 됩니다! 클릭
강좌3 - CSS - 8년 전 등록 / 3년 전 수정

CSS 포지션(position)

static, relative, absolute, fixed

안녕하세요! 이번 시간에는 지난 시간에 다루지 못했던 포지션에 대해 알아보겠습니다! 양이 조금 많고, 중요한 내용이기 때문에 따로 뺐습니다.

포지션이란 이름처럼 태그들의 위치를 결정하는 CSS입니다.

static

일단 모든 태그들은 처음에 position: static 상태입니다. (기본적으로 static이라 따로 써주지 않아도 됩니다.) 차례대로 왼쪽에서 오른쪽, 위에서 아래로 쌓입니다.

relative

여기서 태그의 위치를 살짝 변경하고 싶을 때 position: relative를 사용합니다. 이제 top(위), right(오른쪽), bottom(아래), left(왼쪽) 속성을 사용해 위치 조절이 가능합니다.

CSS 탭을 눌러 CSS를 확인해보세요. 각각의 태그가 기존 static이었을 때의 위치를 기준으로 top, right, bottom, left 방향으로 주어진 픽셀만큼 이동했습니다.

#top 태그에 top: 5px를 줬는데 왜 아래로 이동했을 까요? 바로 relative는 각각의 방향을 기준으로 태그 안쪽 방향으로 이동합니다. 바깥쪽으로 이동하게 하고 싶으면 5px 대신 음수 -5px를 주면 됩니다.

또한 주목할 것은 #top이 #left보다 위에 있다는 겁니다. 보통 태그는 같은 position이면 나중에 나온 태그가 더 위에 배치됩니다. 하지만 z-index라는 속성을 #top 태그에 더 높게 주었기 때문에 #left태그보다 위로 올라갔습니다.

z-index는 태그들이 겹칠 때 누가 더 위로 올라가는지를 결정하는 속성입니다. 기본값은 0이고요. #top에 1을 주었기 때문에 다른 태그들보다 높게 위치합니다. 조금 뒤에 z-index 강좌가 나옵니다.

absolute

relative가 static인 상태를 기준으로 주어진 픽셀만큼 움직였다면, absolute는 position: static 속성을 가지고 있지 않은 조상을 기준으로 움직입니다. 만약 조상 중에 포지션이 relative, absolute, fixed인 태그가 없다면 가장 위의 태그(body)가 기준이 됩니다.

위의 예시를 보면, #absolute는 조상 태그 중 postion: relative인 것이 없기 때문에 body를 기준으로 가장 오른쪽으로 달라붙었습니다. 반면 #child는 조상 태그인 #parent가 position: relative이기 때문에 그것을 기준으로 가장 오른쪽으로 달라붙었습니다. 차이를 아시겠죠?

참고로 absolute가 되면 div여도 더는 width: 100%가 아닙니다.

fixed

제 홈페이지를 보시면 상단 로그인 메뉴와 좌측 내비게이션 메뉴, 우측 명예의 전당, 그리고 하단 포스트 메뉴는 항상 특정 위치에 고정되어 있습니다. 스크롤을 내려도 그 자리에 계속 있죠. 바로 포지션이 fixed로 설정되어 있기 때문입니다.

위의 예시에서 스크롤을 내려보세요! fixed도 absolute처럼 더는 div가 width: 100%가 아닙니다.

다음 시간에는 float정렬에 대해 알아보겠습니다!

조회수:
0
목록
투표로 게시글에 관해 피드백을 해주시면 게시글 수정 시 반영됩니다. 오류가 있다면 어떤 부분에 오류가 있는지도 알려주세요! 잘못된 정보가 퍼져나가지 않도록 도와주세요.
Copyright 2016- . 무단 전재 및 재배포 금지. 출처 표기 시 인용 가능.
5만명이 선택한 평균 별점 4.9의 제로초 프로그래밍 강좌! 로드맵만 따라오면 됩니다! 클릭

댓글

23개의 댓글이 있습니다.
2년 전
d
2년 전
asdf
3년 전
감사합니다
3년 전
보기쉬워 좋네요 고마워요
3년 전
잘봤습니다
3년 전
absolute가 되면 div여도 더는 width: 100%가 아닙니다. 이부분도 같이 예시에 있었으면 더 좋았을것같아요
3년 전
예시에서 absolute 노란 박스 보시면 width가 100%가 아닙니다.
3년 전
absolute position에 대한 아래 설명에서 "부모"가 아니고 "조상"이 아닐까 싶습니다.

relative가 static인 상태를 기준으로 주어진 픽셀만큼 움직였다면, absolute는 position: static 속성을 가지고 있지 않은 부모를 기준으로 움직입니다. 만약 부모 중에 포지션이 relative, absolute, fixed인 태그가 없다면 가장 위의 태그(body)가 기준이 됩니다.
3년 전
네 조상으로 용어 통일했습니다.
3년 전
'A의 의미는 B다' 식으로 책이나 레퍼런스를 보는듯한 꽉막힌 설명이 아니라
아주 단순하고 기초적인 내용을 다룸에도 쓸모있게 사용하고, 응용할 수 있게 설명을 잘하시네요!
이걸 알고 어떤 상황에 이용할 수 있을지? 를 바로 깨우칠 수가 있었음
마치 Good Morning! 이란 말을 배우는데, '좋은 아침 입니다' 란 뜻 뿐만 아니라,
상대가 내 인사를 들었을 때 기분 좋아지게끔 전달하려먼 어떻게 해야 하는지를 같이 배우는 느낌이랄까요



4년 전
와.. 딱보고 한방에 이해가 됐습니다...감사합니다
4년 전
정말 위대합니다
4년 전
위대합니다
4년 전
포스팅 감사합니다.
4년 전
깔끔한 설명 감사합니다.
한번에 이해했음
4년 전
와.. 앱솔루트 렐러티브 책을 봐도 잘 모르겠었는데 이 글을 보고 한번에 이해가 됐어요
4년 전
제가 잘못 이해했네요. 다시 확인해보니 말씀하신 내용이 맞네요. 감사합니다. 혹시 저자님 node js 책을 볼 예정인데요. 저자님이 공부하실 때 참고하신 컨텐츠나 책을 알 수 있을까요?
4년 전
저는 node.js 공식문서랑 express, sequelize github 등만 보고 작성하였습니다.
4년 전
position aboslute 설명이 잘못 되었습니다. 부모 중에 relative가 있는지 확인하는 것으로 mdn에 정의되어 있어 댓글 남깁니다.
4년 전
이 글이 mdn을 보고 작성된 것입니다. mdn 다시 보고 왔는데 아직도 mdn 설명과 일치합니다. https://developer.mozilla.org/ko/docs/Web/CSS/All_About_The_Containing_Block
5년 전
좋은글 잘봤습니다.
5년 전
1
5년 전
감사합니다 도움 많이 되었습니다.
6년 전
인터넷으로 검색해서 다른 블로그들 설명은 전부 알아듣지 못할 용어들을 사용하면서 설명을 해서.... 그 내용을 이해하려면 또다시 그 용어들을 찾아봐야하는데, 제로초님은 진짜 초보들이 알아듣기 쉽게 설명해주시네요. 진짜 좋아요
6년 전
감사합니다~
6년 전
쓰고 보니 나랑 거의 같은 댓글이.... !
6년 전
친절한 설명 너무 좋아요. 한 가지 아쉬운 게 있다면 코드보는 창이 너무 작아서 조금 불편해요. 크게 볼 수 있으면 조금더 좋을 것 같아요. ^o^
6년 전
안녕하세요.. absolute 설명에서 코드창이 너무 좁아서(크기변경 불가) 보기가 힘드네요.. 설명은 잘보고있습니다~! 감사합니다