>  기사  >  웹 프론트엔드  >  em은 상위 요소 또는 현재 요소의 크기를 기준으로 CSS에 있습니까? (코드 예)

em은 상위 요소 또는 현재 요소의 크기를 기준으로 CSS에 있습니까? (코드 예)

不言
不言앞으로
2018-10-24 16:58:143172검색

이 기사에서 제공하는 내용은 CSS의 em이 상위 요소 또는 현재 요소의 크기에 상대적인지에 관한 것입니다. (코드 샘플)에는 특정 참조 값이 있습니다. 도움이 필요한 친구가 참조할 수 있기를 바랍니다.

em은 CSS에서 흔히 사용되는 상대 단위이므로 몇 가지 함정에 주의할 필요가 있습니다.

1em은 글꼴 크기를 설정하지 않는 한 현재 요소의 글꼴 크기와 같습니다.

1em이 글꼴 크기와 같다는 기사가 많이 있습니다. 부모 요소! 이 진술은 실제로 부정확합니다. 다음 예를 보세요.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        body {
            font-size: 16px;
        }
        div {
            font-size: 32px;
            padding-bottom: 2em;
            background-color: aquamarine;
        }
    </style>
</head>

<body>
    <div></div>
</body>
</html>

는 padding-bottom에 의해 늘어나며 padding-bottom의 높이는 32px가 아닌 64px입니다! 이는 1em이 현재 요소의 글꼴 크기와 동일하다는 것을 증명합니다(한 가지 예외는 아래에서 설명함).

글꼴 크기와 길이는 어떤 관계가 있나요? 글꼴이 정사각형이 아닌가요? 실제로 글꼴 크기는 M의 너비로 정의됩니다.

일부 사람들은 왜 1em이 상위 요소의 글꼴 크기와 같다고 잘못 생각합니까? 이는 글꼴 크기를 설정할 때 em 단위를 사용하면 글꼴 크기가 여전히 기본값을 상속하므로 1em은 여전히 ​​상위 요소의 글꼴 크기와 동일하기 때문입니다. 이는 글꼴 크기를 설정하는 경우에만 발생하는 특별한 경우입니다! 이 특별한 경우는 이해하기 쉽습니다. 결국 현재 요소의 글꼴 크기를 설정하고 있습니다! 현재 설정되어 있는 글꼴 크기를 어떻게 단위로 사용할 수 있을까요? 이것은 역설이 아닌가!

예를 들어, 이 역설이 실제로 발생하면 다음과 같은 상황이 발생합니다. 과일 가게 주인이 "오렌지를 몇 킬로그램 원하시나요? 포장해 드리겠습니다"라고 말했지만, 당신은 boss: "제가 원하는 수량은 최종적으로 원하는 수량의 2배입니다."(글꼴 ​​크기 설정: 2em과 유사) 이때, 과일가게 주인은 아마 당신을 위해 몇 개의 오렌지를 포장할 것입니까?
이런 일이 발생하지 않도록 하려면 수량을 지정할 때 상대 단위를 사용하는 경우 이 단위는 현재 지정하는 수량과 관련되어서는 안 됩니다. 상사에게 다음과 같이 말할 수 있습니다. "내가 원하는 수량은 마지막 고객이 구매한 수량의 두 배입니다."(글꼴 ​​크기 설정: 2em과 유사) 오렌지를 구입한 후 상사에게 "방금 구입한 오렌지의 두 배인 사과를 더 원합니다"라고 말할 수 있습니다(padding-bottom 설정과 유사: 2em).

이 특별한 경우를 제외하고 다른 CSS 속성을 설정할 때 1em은 현재 요소의 글꼴 크기 와 같습니다.

위의 예에서 설정 시 em을 font-size 사용하면 다음과 같은 특별한 경우가 존재함을 증명할 수 있습니다.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        body {
            font-size: 16px;
        }
        div {
            font-size: 2em;  /* 仅仅这一行改变了! */
            padding-bottom: 2em;
            background-color: aquamarine;
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

최종 높이는 여전히 64픽셀입니다. 글꼴 크기 설정, 1em == 16px; padding-bottom 설정 시 1em은 32px과 같습니다.

루트 요소의 글꼴 크기로 em을 사용하면 어떻게 되나요? 상위 요소가 없습니다! 문제가 되지 않습니다. 상속된 속성(글꼴 크기 포함)의 경우 루트 요소의 기본값은 초기 값입니다. 대부분의 브라우저에서 글꼴 크기의 초기 값은 16px입니다. 따라서 루트 요소에서 글꼴 크기를 설정할 때 해당 값은 여전히 ​​16px이고 1em은 16px

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        html {
            /* 2*16px=32px */
            font-size: 2em;
        }
        div {
            /* 2*32px=64px */
            font-size: 2em;
            /* 2*64px=128px */
            padding-bottom: 2em;
            background-color: aquamarine;
        }
    </style>
</head>

<body>
    <div></div>
</body>
</html>

과 같습니다.

위 내용은 em은 상위 요소 또는 현재 요소의 크기를 기준으로 CSS에 있습니까? (코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제