본문 바로가기
html, css

[html/css] css의 단위

by 상똥프 2023. 10. 16.

0. 선요약

상위 항목
(부모)
- body 폰트사이즈 50% body 폰트사이즈 50%
div 폰트사이즈 1.5rem
html 폰트사이즈 10px
body 폰트사이즈 50%
div 폰트사이즈 1.5rem
부모에
따른
변화 O
- %
em
%
em
%
em
rem
부모에
따른
변화 X
- px
rem
px
rem
px
결과
 

 

 

1. 단위 요약

단위 의미 설명
% 백분율 기본사이즈의 백분율로 나타낼 수 있다.
em 배수 모든 상위 항목으로부터 영향을 받는다
rem 배수 최상위 항목으로부터 영향을 받는다
px 픽셀 픽셀 단위

 

2. 단위 비교

(1) 상위 항목이 없는 경우

- 아래와 같은 코드가 있을 때 비교해보면, 각각 큰 차이는 없다

- 기본값(initial-scale)을 기준으로 변동하기 때문이다.

기본 html

<body>
    <div>
        <p>size : initial-scale</p>
        <p>size : 16px</p> <p>size : 100%</p> <p>size : 1.0em</p> <p>size : 1.0rem</p>
        <p>size : 24px</p> <p>size : 150%</p> <p>size : 1.5em</p> <p>size : 1.5rem</p>
        <p>size : 32px</p> <p>size : 200%</p> <p>size : 2.0em</p> <p>size : 2.0rem</p>
    </div>
</body>

기본 css

p:nth-child(1){ font-size: initial;}
p:nth-child(2){ font-size: 16px; } 
p:nth-child(3){ font-size: 100%; }
p:nth-child(4){ font-size: 1.0em; }
p:nth-child(5){ font-size: 1.0rem; }
p:nth-child(6){ font-size: 24px; }
p:nth-child(7){ font-size: 150%;}
p:nth-child(8){ font-size: 1.5em; }
p:nth-child(9){ font-size: 1.5rem; }
p:nth-child(10){ font-size: 32px; }
p:nth-child(11){ font-size: 200%;}
p:nth-child(12){ font-size: 2.0em; }
p:nth-child(13){ font-size: 2.0rem; }

결과

 

(2) 상위 항목이 존재할 때 

- body의  font-size를 기본값 16과 다르게 5로 지정해보겠다.

- html 코드는 위와 같다

- css 코드의 맨 위에 아래 사항을 추가한다

body{ font-size: 50%; }

결과

- em과 %는 상위항목인  body의 폰트값에 영향을 받지만

- rem과 px은 영향을 받지 않는다

- rem은 최상위 값에만 영향을 받고

- px은 그 무엇에도 영향을 받지 않기 때문이다.

 

(3) 상위항목이 여러 개 존재할 때

- body의  font-size를 기본값 16과 다르게 5로 지정해보겠다.

- html 코드는 위의 기본코드와 같다

- 기본 css 코드의 맨 위에 아래 사항을 추가한다

body{ font-size: 50%; }		//상위 항목
div{ font-size: 1.5rem }	//차상위 항목

 

- px. rem은 전혀 영향을 받지 않고

- em은 상위항목과 차상위 항목 모두에 영향을 받는다

 

(4) 최상위항목과 상위항목이 여러개 존재할 때

- 기본 html에서 <p>값들을 모두 한 번에 <div>로 감싼다

<body>
    <div>
        <p>size : initial-scale</p>
        <p>size : 16px</p> <p>size : 100%</p> <p>size : 1.0em</p> <p>size : 1.0rem</p>
        <p>size : 24px</p> <p>size : 150%</p> <p>size : 1.5em</p> <p>size : 1.5rem</p>
        <p>size : 32px</p> <p>size : 200%</p> <p>size : 2.0em</p> <p>size : 2.0rem</p>
    </div>
</body>

- 기본 css 코드의 맨 위에 아래 사항을 추가한다

html{ font-size: 10px; }		//최상위항목
body{ font-size: 2em; }			//상위항목
div{ font-size: 1.5rem; }		//차상위항목

 

결과

- rem은 최상위항목에만 영향을 받았음을 알 수 있다

- em, %는 모든 상위항목에 영향을 받는다

- px단위는 그 어떤 영향도 받지 않는다

 

 

결론

상위항목에 따라 크기가 달라지므로 초보자(나)는 px를 주로 이용하고

연쇄적으로 편리하게 사이즈 변화를 주고싶다면 %, em, rem을 적절히 활용하자

'html, css' 카테고리의 다른 글

[html/css] flexbox  (1) 2023.10.17
[html/css] 링크(새 창) 보안 문제 해결하기  (0) 2023.10.17
[html/css] Box Layout : border  (0) 2023.10.15
[html/css] Box Layout : content, padding  (0) 2023.10.15
[html/css] div와 span의 차이  (0) 2023.10.15