CSS - 단위

MJ·2023년 2월 14일
0

CSS

목록 보기
19/36
post-thumbnail

1. % 단위

  • 절대값과는 다르게 상대적인 단위로, 부모 요소의 크기에 비례해서 측정된다.
    50%로 설정한 경우, 부모 요소 크기의 50%로 적용 됨

<section>
	<div></div>
</section>
section {
    background-color: salmon;
    width: 800px;
    height: 800px;
}

div {
    background-color: aquamarine;
    width: 50%;
    height: 50%; 
    /* 부모요소 section 크기의 50%로 설정 된다. (400x400) */
}



1.1 요소 자체의 크기로 결정

  • %는 부모 요소의 크기에 비례해서 설정되는 뿐만 아니라, 요소 자체의 크기에 따라
    상대적으로 변하기도 합니다.
<h1> CSS </h1>
h1 {
    font-size: 40px;
    border: solid 1px black;
    line-height: 200%;
    /* 폰트의 사이즈 40px의 2배만큼 줄간격이 설정 됩니다 (80px) */
}

200%의 수치가 글꼴의 2배인 80px이 맞는지 확인이 필요하다면, line-height 간격을
80px로 설정해서 변하는게 없는지 확인해보면 됩니다. ( 확인 결과 동일했음 )


% 단위는 부모요소가 있는 경우 부모요소에 대한 상대적인 값으로 결정되고,
부모요소가 있더라도 현재요소에서 참고할 수 있는 값이 있다면 현재 요소의 상대적인
값으로 결정 된다.



2. em 단위

  • 부모 요소의 크기에 따라 상대적으로 변하는 값
<article>
        <h2> I am H2 </h2>
        <p> 텍스트더미 </p>
</article>
article {
    font-size: 30px;
}

h2 {
    font-size: 2em;
    /* 부모요소 폰트 크기의 2배로 적용 
    	h2의 부모 요소는 article이므로, 30px의 2배인 60px이 된다. */
}

p {
	font-szie: 0.5em;
    /* 부모요소 폰트 크기의 0.5(1/2)배 만큼 적용
    	p의 부모 요소는 article이므로, 30px의 0.5배인 15px이 된다. */
}



2.1 여백은 현재 요소의 글꼴 크기에 비례한다

  • em 단위는, 글꼴같은 경우에는 부모요소의 크기에 따라서 자식 요소의 사이즈가
    정해지지만, 마진 같은 여백의 부분은, 현재 요소의 크기에 따라서 사이즈가 정해짐
/* h2의 부모 요소 */
article {
    font-size: 20px;
}

h2 {
    font-size: 2em;
    /* 글꼴의 크기는 부모요소의 2배 즉, 40px로 결정 된다. */
    margin-left: 1em;
    /* 여백의 크기는 현재요소(h2)의 1배 즉, 40px로 결정 된다. 
    	부모 요소의 크기에 비례했다면 20px로 적용되겠지만 아닙니다. */
}



2.2 픽셀대신 em을 쓰는 이유

  • 픽셀 같은 경우는 절대적인 값의 단위이기에 한 번 설정하면 값을 변경할 때마다
    수동적으로 일일이 변경해줘야 합니다.

  • em 단위는, 부모요소나 현재요소의 크기에 따라서 변하는 상대적인 값으로, 능동적으로
    값의 수정이 가능합니다. 일일이 값을 변경하지 않아도 됩니다.

/* button 부모요소 */
article {
    font-size: 20px;
}

button {
    font-size: 1em;
    padding: 0 1em;
    border-radius: 0.5em;
    /* 값의 단위를 em으로 설정하면, font-size의 크기가 변함에 따라서 나머지 값들도
    	요소의 상대적인 크기에 맞게 크고 작아지므로 능동적이게 됩니다.
        단위가 px이였다면, font-size의 크기가 커지게 되면 이에 맞춰서 나머지 값들도
        알맞게 변경해줘야 시각적으로 이쁘게 보여질 것 입니다. */
    border: 2px solid red;
}



2.3 em의 단점

  • em 단위의 문제점은, 자식요소가 중첩 될수록 단계별로 크기가 배수가 되어서
    급격하게 커지거나, 급격하게 작아집니다.

  • 부모 > 자식 > 손자 > 증손자등으로 요소가 중첩된다면, 자식요소를 제외한 손자, 증손자
    등의 요소는 부모 요소의 글꼴 크기보다 배수로 작아지거나 커지게 됩니다.


<article>
		<ul>
            <li> <!-- 1 -->
                Pasta
                <ul>
                    <li>Cream
                        <ul>
                            <li>Milk</li>
                        </ul>
                    </li>
                    <li>Roze</li>
                </ul>
            </li> <!-- 1 -->
            <li>Salad</li>
            <li>Gelato</li>
        </ul>
</article>
article {
    font-size: 20px;
}

ul {
    font-size: 1.5em;
    /* 부모 요소의 1.5배로 폰트 사이즈를 결정
    자식 요소가 단계별로 중첩되는 경우 1.5배씩 늘어납니다. */
}



3. rem 단위

  • em 과 유사하지만, 글꼴 크기가 부모요소의 크기에 따라 변하지 않고, Root Html 요소의
    크기에 따라서 변경됩니다.

  • 문서 전체에서 하나의 글꼴 크기에 비례하여 바뀝니다.

<html lang="en"> 
<!-- html 문서에서 최상단 요소인 html 요소가 root가 됩니다.
  rem 단위의 글꼴은 이 태그를 기반으로 사이즈가 정해집니다. -->
html {
	font-size: 10px;
    /* 문서 전체의 글꼴에 해당하는 루트요소 */
}

#rems p {
    font-size: 1rem;
    /* 루트 크기의 1배로 설정 된다. */
}

#rems ul {
    font-size: 1.5rem;
    /* 루트 크기의 1.5배로 설정 된다.
    	em과 다르게 중첩된 자식 요소들 또한 루트를 참조하므로 크기가 누적되지 않습니다. */
}


emrem은 둘 다 사용됩니다.

em 같은 경우에는 현재 글꼴 크기를 대상으로 나머지 단위들도 값을 맞춰가야 하는
요소에서 사용 됩니다.
앞서 얘기한 버튼의 디자인부분과 같은 상황에서 처럼요.

profile
프론트엔드 개발자가 되기 위한 학습 과정을 정리하는 블로그

0개의 댓글