% / em / rem / root 를 쓰는 이유 ?
사용처에 의해 화면 배율이 달라졌을 경우 px 로 직접 지정한다면 ,
추후 사용처 마다 직접 전부 수정해야 하는 단점이 있음.
하지만 비율로 적용 시키게 되면 , 사용처 마다 자연스럽게 비율로 따라가게 됨.
% 단위
부모 요소를 기준으로 적용되는 모든 단위에 대한 상대적 백분율.
부모요소 중첩 , 계층별 부모요소에 % 단위가 각각 적용시 → 누적 비율 적용.
section:nth-child(1) p {
background-color: brown;
font-size: 80%;
/* 16px * 0.8 = 12.8px */
}
section:nth-child(1) p strong {
color: white;
font-size: 150%;
/* 12.8px * 1.5 = 19.2px */
}
em 단위
부모 요소를 기준으로 적용되는 font-size 속성 크기를 기반으로 한 상대적 비율.
부모요소 중첩 , 계층별 부모요소의 em 단위가 각각 적용시 → 누적 비율 적용.
단 , 임의의 부모 계층이나 자기 자신 요소에 대한 폰트사이즈를 px 로 지정한다면,
그 시점부터 다시 초기화 되어 이전에 적용되었던 비율은 무시된다.
section:nth-child(2) p {
background-color: aquamarine;
font-size: .8em;
/* 16px * 0.8 = 12.8px */
}
section:nth-child(2) p strong {
color: red;
font-size: 1.5em;
/* 12.8px * 1.5 = 19.2px */
}
em 과 %의 차이
결과적으로 값 표현과 단위 명칭만 다를 뿐 동일 적용되는 것 처럼 표현되나,
%는 상속계층 내에서 단위 지정이 가능한 모든 개별 속성간의 누적 배율이 적용되고,
em은 상속계층간 font-size 속성을 기반으로 한 누적 배율이 적용된다.
aside {
background-color: bisque;
width: 20em;
/*
16px * 20 = 320px
*/
}
aside h3 {
background-color: blueviolet;
width: 80%;
/*
320px * 0.8 = 256px
*/
}
aside p {
background-color: cyan;
width: 20em;
/*
16px * 20 = 320px - 상속 계층 내 font-size 속성 크기가 변하지 않는 한 다른 속성에 대한
상속 계층간 em 단위 적용은 최상위 부모 계층에 지정된 font-size 속성
크기에 대한 배율만 적용.
*/
}
aside 의 자식요소인 p 에 누적 배율이 적용 될 것 같다고 오류를 범할 수 있는데,
부모 body 의 폰트 사이즈에 기반하였기 때문에 aside 와 aside p의 width 값은 같다.
rem (root em)
최상위 부모 요소의 font-size 에 대한 배율만 적용 시킨다.
최상위 부모 요소 , 즉 html 또는 root 에 적용 된 값에 따라 가거나 값이 없다면 기본 디폴트 값으로 적용 받는다.
footer {
background-color: blue;
font-size: 30px;
}
footer h4 {
background-color: silver;
font-size: 1.3rem;
width: 20rem;
/*
16px * 1.3 = 20.8px - font-size
16px * 20 = 320px - width
*/
}
:root 루트 요소의 속성 지정.
html {
font-size:20px;
}
* :root {
font-size:20px;
}
html 의 태그 선택자 또는 root의 가상 클래스 선택자로 표현이 가능.
'Developer > HTML_CSS' 카테고리의 다른 글
CSS, min-width(height) , max-width(height) / vmin , vmax (0) | 2024.04.16 |
---|---|
CSS, viewport / margin / height / width / vh , vw (0) | 2024.04.16 |
CSS, 색상명 지정과 불투명도 ( color / rgb / opacity ) (0) | 2024.04.16 |
CSS,선택자의 우선순위와 상속과 비상속 (0) | 2024.04.15 |
CSS,속성 선택자를 알아보자. (0) | 2024.04.15 |