반응형
Jake Seo
제이크서 위키 블로그
Jake Seo
전체 방문자
오늘
어제
  • 분류 전체보기 (715)
    • 일상, 일기 (0)
    • 백준 문제풀이 (1)
    • 릿코드 문제풀이 (2)
    • 알고리즘 이론 (10)
      • 기본 이론 (2)
      • 배열과 문자열 (8)
    • 데이터베이스 (15)
      • Planet Scale (1)
      • MSSQL (9)
      • 디비 기본 개념 (1)
      • SQLite 직접 만들어보기 (4)
    • 보안 (7)
    • 설계 (1)
    • 네트워크 (17)
      • HTTP (9)
      • OSI Layers (5)
    • 회고 (31)
      • 연간 회고 (2)
      • 주간 회고 (29)
    • 인프라 (52)
      • 도커 (12)
      • AWS (9)
      • 용어 (21)
      • 웹 성능 (1)
      • 대규모 서비스를 지탱하는 기술 (9)
    • 깃 (7)
    • 빌드 도구 (7)
      • 메이븐 (6)
      • 그레이들 (0)
    • Java (135)
      • 이펙티브 자바 (73)
      • 자바 API (4)
      • 자바 잡지식 (30)
      • 자바 디자인 패턴 (21)
      • 톰캣 (Tomcat) (7)
    • 프레임워크 (64)
      • next.js (14)
      • 스프링 프레임워크 (28)
      • 토비의 스프링 (6)
      • 스프링 부트 (3)
      • JPA (Java Persistence API) (5)
      • Nest.js (8)
    • 프론트엔드 (48)
      • 다크모드 (1)
      • 노드 패키지 관리 매니저 (3)
      • CSS (19)
      • Web API (11)
      • tailwind-css (1)
      • React (5)
      • React 새 공식문서 요약 (1)
      • HTML (Markup Language) (5)
    • 자바스크립트 (108)
      • 모던 자바스크립트 (31)
      • 개념 (31)
      • 정규표현식 (5)
      • 코드 스니펫 (1)
      • 라이브러리 (6)
      • 인터뷰 (24)
      • 웹개발자를 위한 자바스크립트의 모든 것 (6)
      • 팁 (2)
    • Typescript (49)
    • 리눅스와 유닉스 (10)
    • Computer Science (1)
      • Compiler (1)
    • IDE (3)
      • VSCODE (1)
      • IntelliJ (2)
    • 세미나 & 컨퍼런스 (1)
    • 용어 (개발용어) (16)
      • 함수형 프로그래밍 용어들 (1)
    • ORM (2)
      • Prisma (2)
    • NODEJS (2)
    • cypress (1)
    • 리액트 네이티브 (React Native) (31)
    • 러스트 (Rust) (15)
    • 코틀린 (Kotlin) (4)
      • 자바에서 코틀린으로 (4)
    • 정규표현식 (3)
    • 구글 애널리틱스 (GA) (1)
    • SEO (2)
    • UML (2)
    • 맛탐험 (2)
    • 리팩토링 (1)
    • 서평 (2)
    • 소프트웨어 공학 (18)
      • 테스팅 (16)
      • 개발 프로세스 (1)
    • 교육학 (1)
    • 삶의 지혜, 통찰 (1)
    • Chat GPT (2)
    • 쉘스크립트 (1)
    • 컴파일 (2)
    • Dart (12)
    • 코드팩토리의 플러터 프로그래밍 (4)
    • 플러터 (17)
    • 안드로이드 스튜디오 (1)
    • 윈도우즈 (1)
    • 잡다한 백엔드 지식 (1)
    • 디자인 패턴 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • item7
  • Next.js
  • 토비의 스프링
  • 자바
  • Javadoc 자바독 자바주석 주석 Comment
  • item8
  • Java
  • 자바스크립트 인터뷰
  • 메이븐 골
  • 싱글톤 패턴
  • 추상 팩터리 패턴
  • 디자인패턴
  • 메이븐 페이즈
  • 러스트
  • 자바스크립트 면접
  • pnpm
  • 자료구조
  • 객체복사
  • prerendering
  • 외래키 제약조건
  • 슬로우 쿼리
  • bean Validation
  • 싱글톤
  • 이펙티브 자바 item9
  • 자바 검증
  • NEXT JS
  • MSSQL
  • 작업기억공간
  • 이펙티브자바
  • serverless computing
  • try-with-resources
  • 메이븐 라이프사이클
  • 프로그래머의 뇌
  • 자바 디자인패턴
  • 자바스크립트
  • 플라이웨이트패턴
  • 스프링 검증
  • next js app
  • 도커공식문서
  • 느린 쿼리
  • Pre-rendering
  • 빈 검증
  • 이펙티브 자바
  • 참조 해제
  • rust
  • item9
  • 싱글턴
  • 알고리즘
  • 서버리스 컴퓨팅
  • 팩터리 메서드 패턴

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Jake Seo

제이크서 위키 블로그

CSS 포지션 (position) 속성이란?
프론트엔드/CSS

CSS 포지션 (position) 속성이란?

2022. 11. 12. 15:54

CSS 포지션 (position) 속성이란?

HTML 요소가 어떻게 위치할지에 대한 속성이다. top, right, bottom, left 프로퍼티가 최종 위치를 결정한다.

position 의 종류 알아보기

position: static;
position: relative;
position: absolute;
position: fixed;
position: sticky;

/* Global values */
position: inherit;
position: initial;
position: revert;
position: revert-layer;
position: unset;

위는 position 속성의 값으로 들어올 수 있는 모든 케이스를 적어둔 것이다.

static

  • 기본적인 엘리먼트 배치 원리를 따른다.
  • 요소가 차지하도록 공간을 비워둔다.

position 을 설정하지 않았을 때의 기본 값이다. top, right, bottom, left, z-index 와 같은 속성이 동작하지 않는다.

예제

position: static;
/* top, left 등은 동작하지 않는다. */
top: 40px;
left: 40px;

relative

  • 마찬가지로 기본적인 엘리먼트 배치의 원리를 따른다.
  • 요소가 차지하도록 공간을 비워둔다.

단, static 과 다르게 top, right, bottom, left, z-index 와 같은 속성이 동작한다. 요소가 차지하는 자리는 static 과 동일하다.

z-index 를 통해 요소를 쌓는 것도 가능하다.

table-*-group, table-row, table-column, table-cell, and table-caption 에 대한 효과는 정의되지 않았다.

예제

position: relative;
/* static 과 다르게 아래의 속성 값이 동작한다. */
top: 40px;
left: 10px;

absolute

  • 기본적인 엘리먼트 배치 원리에서 벗어난다.
  • static 혹은 relative 와 다르게 요소가 차지하도록 비워두는 공간이 없다.

가장 가까운 조상 엘리먼트에 따라 위치가 정해진다. 최종 위치는 top, right, bottom, left 속성 값에 의해 결정된다.

예제

position: absolute;
left: 30px;

fixed

  • 기본적인 엘리먼트 배치 원리에서 벗어난다.
  • 요소가 차지하도록 비워두는 공간이 없다.

뷰포트의 초기 컨테이닝 블록을 기준으로 위치가 정해진다. 조상 엘리먼트 중 하나가 CSS Transform Spec 에 있는 속성인 transform, perspective filter 프로퍼티 중 하나를 none 이외에 다른 값으로 설정하거나 will-change 프로퍼티를 transform 으로 설정한다면, 뷰포트의 조상을 기준으로 위치가 정해진다. (뷰포트의 조상이 containing block이 된다.)

항상 요소를 겹치게 되며, 프린트된 문서에서는 매 페이지에서 위치가 같게 된다.

뷰포트란 화면에 보여지는 다각형 영역 (보통 직사각형) 을 이야기한다. 뷰포트 중 지금 당장 볼 수 있는 부분을 시각적 뷰포트 라고 부른다. 사용자가 화면을 확대하면 레이아웃 뷰포트는 변하지 않지만, 시각적 뷰포트는 변한다.

perspective 와 filter 는 브라우저에 따라 동작이 다르다는 것에 유의해야 한다.

sticky

  • 기본적인 엘리먼트 배치 원리에 의해 위치가 정해진다.
  • 요소가 차지하도록 공간을 비워둔다.

offset 은 스크롤이 가능한 가장 가까운 조상 엘리먼트에 상대적으로 정해진다. (table 과 관련된 엘리먼트도 포함된다.) offset 은 다른 엘리먼트의 위치에 영향을 미치지 않는다.

당연히 요소를 겹치게 된다. 스크롤링이 가능한 가장 가까운 엘리먼트에 달라붙기 때문에, 스크롤링 메커니즘은 갖고 있지만, 해당 요소가 실제로 스크롤링이 안되면서 가까운 조상이 스크롤이 가능한 경우에는 다른 동작을 보일 수 있다. (sticky 를 잘못된 조상에 붙이고 착각할 수 있다는 이야기이다.)

보충 설명

  • 위치 지정이 가능한 요소는 static 을 제외한 다른 position 속성 값을 가진 요소이다.
  • relative 는 원래의 위치에 상대적인 offset 이 더해지는 형태이다.
  • 절대적 위치를 갖는 요소는 absolute 와 fixed 이다.

레퍼런스

MDN 공식 문서

반응형
저작자표시 비영리 (새창열림)

'프론트엔드 > CSS' 카테고리의 다른 글

CSS transform 속성이란?  (0) 2022.11.13
CSS Animation 속성이란?  (0) 2022.11.13
CSS - Flex 정리  (0) 2022.07.04
PostCSS 의 Autoprefixer 란 무엇인가?  (0) 2022.06.12
PostCSS 란 무엇인가?  (0) 2022.06.12
    '프론트엔드/CSS' 카테고리의 다른 글
    • CSS transform 속성이란?
    • CSS Animation 속성이란?
    • CSS - Flex 정리
    • PostCSS 의 Autoprefixer 란 무엇인가?
    Jake Seo
    Jake Seo
    ✔ 잘 보셨다면 광고 한번 클릭해주시면 큰 힘이 됩니다. ✔ 댓글로 틀린 부분을 지적해주시면 기분 나빠하지 않고 수정합니다. ✔ 많은 퇴고를 거친 글이 좋은 글이 된다고 생각합니다. ✔ 간결하고 명료하게 사람들을 이해 시키는 것을 목표로 합니다.

    티스토리툴바