2023. 4. 28. 22:27ㆍ프로그래밍/HTML, CSS,
목차
1. CSS에서 position 속성이란?
2. position 속성의 속성값들(static, relative, absolute, sticky, fixed)
3. 실습 예제
글 시작에 앞서...
이전에 CSS의 여러 가지 속성들에 대해 포스팅한 적이 있다. 이제까지는 레이아웃을 배치할 때 margin속성을 이용한 편법으로 실습을 진행했고 한계점을 느꼈다. 그래서 자주 쓰이는 display와 position 속성에 대해서는 나 스스로도 다시 공부할 필요성을 느껴 재정리하는 시간을 가지게 됐다.
1. CSS에서 position 속성이란??
position과 display는 우리가 프론트엔드 프로그래밍을 할 때 레이아웃을 배치해줄 수 있는 가장 기본적이고 자주 쓰이는 속성들이다. position은 content(span, div등 태그들을 뜻함)의 위치를 조정해주고 display는 인라인과 블럭 요소끼리 자유롭게 변환해서 사용할 수 있게끔 해준다.
Instagram메인화면을 예시로 우리는 위의 레이아웃을 구성하기 위해 크게 좌측의 이미지와 우측의 로그인 창을 블럭으로 구성해야 할 것이다. 또한 로그인 블럭 내에서도 몇 가지의 블럭으로 나뉠 것이다. 이럴 때 블럭간의 위치를 조정해줄 수 있는 역할을 하는 것이 position속성이다.
2. position 속성의 속성값들(static, relative, absolute, sticky, fixed)
position 속성에는 대표적으로 5가지 속성이 있다. 속성값을 정하고 난 후에는 left, right, bottom, top속성을 이용해 위치를 지정한다.
여기서 left는 왼쪽으로 가는 것이 아닌 현재 블럭의 기준에서 왼쪽으로 멀어지겠다는 뜻으로 오른쪽으로 이동한다. 또한 기본적으로 position이 참고하는 좌표는 좌측 위쪽(top-left)를 기준으로 한다.
- static : default값으로 설정되는 속성값으로 상하좌우 속성을 이용해도 움직이지 않는 고정상태를 뜻한다.
- relative : 현재 블럭의 위치에서 상대적으로 움직인다.
- absolute : 설정하려는 블럭에서 가장 가까운 블럭태그의 위치를 기준으로 움직인다.
- sticky : 현재 창을 기준으로 본인의 위치를 절대적으로 유지한다.
- fixed : 블럭이 아닌 창의 전체 크기를 기준 좌표로 삼고 움직인다(좌측 위쪽).
3. 실습 예제
블럭을 설정하는 HTML코드와 CSS코드는 아래와 같다. 맨 아래의 relative 선택자에서 position을 absolute, fixed, sticky로 바꿔서 진행한 실습이니 참고.
relative와 absolute는 위에서 설명한 그대로이지만 fixed와 sticky는 추가 설명이 필요하다. fixed는 우선 본인이 속해있는 블럭, 즉 노란색 배경 밖으로 나간 모습이다. 즉 전체 창을 기준으로 위치가 설정됐으며 스크롤을 내리거나 창을 줄여도 절대 위치를 고수하는 모습을 보여준다. sticky는 위치를 설정해도 본인의 현재 위치에서 스크롤을 움직여도 고정된 모습을 보이지만, 블럭내에서만 한정된다. 즉 fixed와 sticky의 차이점은 다음과 같다.
fixed -> 속해있는 블럭의 위치를 기준으로 하지 않고 전체 창을 기준으로 위치를 설정하고 창의 크기나 스크롤로 인해 위치가 바뀌어도 블럭은 고정된 상태로 유지.
sticky -> static과 마찬가지로 위치를 설정해도 블럭의 위치가 변하지 않으나 창을 줄이거나 스크롤을 움직였을 때는 그 위치를 고수함. 단 본인이 속한 블럭내에서 한정된다(실습에서는 노란 박스).
'프로그래밍 > HTML, CSS,' 카테고리의 다른 글
[JavaScript] JavaScript property란? (0) | 2023.05.03 |
---|---|
[JavaScript] 변수 종류(var, let , const),호이스팅, 스코프 (0) | 2023.05.02 |
[CSS] CSS의 블럭(block)과 인라인(inlines)의 차이 및 관련 속성과 태그 (1) | 2023.04.28 |
[CSS] CSS가 뭔데? + div, span,id,class 차이점은? (0) | 2023.04.26 |
[HTML] HTML의 기본 파헤치기 (1) | 2023.04.26 |