Programming

; develop a program

Front-End/HTML & CSS

[CSS] px | em | rem

Clloud_ 2023. 5. 29. 09:07
반응형

이번 포스팅에서는 CSS3에서 사용되는 단위인 px, rem, em의 차이에 대하여 공부를 해보고자 한다.
이 단위들은 웹 페이지의 요소들의 크기를 지정하는 데 사용된다.

 

 


각 단위에 대한 설명

px(픽셀)

  • px은 "픽셀"을 나타내며, 고정된 크기를 나타낸다.
  • 예를 들어, font-size: 16px;는 해당 텍스트의 글꼴 크기를 16픽셀로 설정한다.
  • 픽셀 단위로 크기를 지정하므로, 장치의 해상도에 따라 크기가 변하지 않는다.
  • 고정 크기로 웹 페이지를 디자인하고자 할 때 주로 사용된다.

 

rem (루트 엠)

  • rem은 "루트 엠"을 나타내며, 상대적인 크기를 나타낸다.
  • 기본적으로 HTML 요소의 기본 글꼴 크기인 "루트 엠"을 기준으로 삼는다.
  • 예를 들어, font-size: 1.2rem;은 해당 텍스트의 글꼴 크기를 루트 엠의 1.2배로 설정한다.
  • 상위 요소의 크기에 영향을 받지 않고, 오직 루트 엠을 기준으로 상대적인 크기를 조정한다.
  • 반응형 웹 디자인에 유용하며, 루트 엠을 조정함으로써 전체적인 디자인의 크기를 일괄적으로 조정할 수 있다.

 

em (엠)

  • em은 "엠"을 나타내며, 상대적인 크기를 나타낸다.
  • 기본적으로 해당 요소의 부모 요소의 글꼴 크기를 기준으로 삼는다.
  • 예를 들어, font-size: 1.2em;은 해당 텍스트의 글꼴 크기를 부모 요소의 글꼴 크기의 1.2배로 설정한다.
  • 상위 요소의 크기에 영향을 받으며, 계층적인 구조에서 부모 요소의 크기가 변경되면 자식 요소의 크기도 변경된다.
  • 주로 상대적인 크기를 적용하거나, 상위 요소의 크기에 따라 유동적인 크기를 조정하고자 할 때 사용된다.

 

px, rem, em은 각각 고정 크기, 루트 엠 기준의 상대적인 크기, 부모 요소 기준의 상대적인 크기를 나타내므로, 웹 페이지의 요소들의 크기를 조정하는 데 유용하게 사용된다.
선택할 단위는 디자인의 목적과 요구에 따라 결정되어야 한다.

 


예제

박스의 크기를 px, rem, em을 사용하여 설정하는 예제 코드

<!DOCTYPE html>
<html>
<head>
  <style>
    .container {
      width: 300px;
      height: 200px;
    }

    .box1 {
      width: 200px; /* 픽셀 */
      height: 120px; /* 픽셀 */
    }

    .box2 {
      width: 70%;
      height: 70%;
    }

    .box3 {
      width: 80%;
      height: 80%;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
  </div>
</body>
</html>

위의 코드에서는 .container 클래스의 요소를 가진 컨테이너 박스를 생성한다.
그 안에는 .box1, .box2, .box3 클래스의 요소로 세 개의 박스를 만든다.

  • .box1width: 200px;와 height: 120px;를 사용하여 고정된 픽셀 크기로 설정된다.
  • .box2.box3는 상위 .container 요소의 크기를 기준으로 백분율 단위를 사용하여 크기를 조정한다.
    • .box2width: 70%;와 height: 70%;를 사용하여 .container의 너비와 높이의 70%로 설정된다.
    • .box3width: 80%;와 height: 80%;를 사용하여 .container의 너비와 높이의 80%로 설정된다.

 

이 예제를 실행하면 각 박스가 설정된 크기에 따라 다르게 표시된다.
첫 번째 박스는 항상 200px * 120px로 고정되어 있지만, 두 번째와 세 번째 박스는 .container 요소의 크기에 따라 유동적으로 조정된다.

 


반응형

'Front-End > HTML & CSS' 카테고리의 다른 글

[CSS] 뷰포트(ViewPort)  (0) 2023.07.03
[CSS] Flex 컨테이너  (0) 2023.06.29
[CSS] flex 태그  (0) 2023.05.29
[Front-End] HTML 입력 양식  (0) 2022.10.20
[Front-End] HTML 공간 분할  (0) 2022.10.19