Heim > Web-Frontend > CSS-Tutorial > Ist em in CSS relativ zum übergeordneten Element oder zur Größe des aktuellen Elements? (Codebeispiel)

Ist em in CSS relativ zum übergeordneten Element oder zur Größe des aktuellen Elements? (Codebeispiel)

不言
Freigeben: 2018-10-24 16:58:14
nach vorne
3187 Leute haben es durchsucht

Im Inhalt dieses Artikels geht es darum, ob em in CSS relativ zur Größe des übergeordneten Elements oder des aktuellen Elements ist. (Codebeispiel) hat einen gewissen Referenzwert. Freunde in Not können darauf verweisen.

em ist eine häufig verwendete relative Einheit in CSS, daher ist es notwendig, auf einige Fallstricke zu achten.

1em entspricht der Schriftgröße des aktuellen Elements, es sei denn, Sie legen die Schriftgröße fest

In vielen Artikeln heißt es, dass 1em der Schriftgröße des übergeordneten Elements entspricht! Diese Aussage ist tatsächlich ungenau. Schauen Sie sich das folgende Beispiel an:

<!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>
Nach dem Login kopieren

wird durch padding-bottom gestreckt und die Höhe von padding-bottom beträgt 64px, nicht 32px! Dies beweist, dass 1em der Schriftgröße des aktuellen Elements entspricht (mit einer Ausnahme, die weiter unten erläutert wird).

Welche Beziehung besteht zwischen Schriftgröße und -länge? Ist die Schriftart nicht ein Quadrat? Tatsächlich ist die Schriftgröße als die Breite von M definiert.

Warum denken manche Leute fälschlicherweise, dass 1em der Schriftgröße des übergeordneten Elements entspricht? Dies liegt daran, dass, wenn Sie beim Festlegen der Schriftgröße em-Einheiten verwenden, die Schriftgröße weiterhin den Standardwert erbt, sodass 1em immer noch der Schriftgröße des übergeordneten Elements entspricht. Dies ist nur beim Festlegen der Schriftgröße ein Sonderfall! Dieser Sonderfall ist leicht zu verstehen, schließlich stelle ich die Schriftgröße des aktuellen Elements ein! Wie können wir die aktuell eingestellte Schriftgröße als Einheit verwenden! Ist das nicht ein Paradoxon!

Wenn dieses Paradoxon beispielsweise tatsächlich auftritt, entsteht folgende Situation: Der Obstladenbesitzer sagt zu Ihnen: „Wie viele Kilogramm Orangen möchten Sie, ich verpacke sie für Sie“, aber Sie sagen zum Chef : „Die Menge, die ich möchte, ist doppelt so groß wie die Menge, die ich letztendlich möchte“ (ähnlich wie bei der Einstellung von „font-size: 2em“). Zu diesem Zeitpunkt wird der Obstladenbesitzer wahrscheinlich zusammenbrechen. Wie viele Orangen wird er für Sie verpacken?
Um dies zu vermeiden, wenn Sie bei der Mengenangabe relative Einheiten verwenden, darf die Einheit nicht relativ zu der Menge sein, die Sie gerade angeben. Sie können Ihrem Chef sagen: „Die Menge, die ich möchte, ist doppelt so groß wie die Menge, die der letzte Kunde gekauft hat“ (ähnlich wie bei der Einstellung „font-size: 2em“). Nachdem Sie die Orangen gekauft haben, können Sie dem Chef sagen: „Ich möchte noch mehr Äpfel, doppelt so viele wie die Orangen, die ich gerade gekauft habe“ (ähnlich wie bei der Einstellung padding-bottom: 2em).

Mit Ausnahme dieses Sonderfalls entspricht 1em beim Festlegen anderer CSS-Eigenschaften der Schriftgröße des aktuellen Elements .

Im obigen Beispiel kann die Verwendung von em beim Festlegen von font-size die Existenz dieses Sonderfalls beweisen:

<!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>
Nach dem Login kopieren

Die endgültige Höhe beträgt immer noch 64px, da beim Festlegen von „font-size“ 1em = ist = 16px; beim Festlegen von padding-bottom entspricht 1em 32px.

Was passiert, wenn Sie em als Schriftgröße für das Stammelement verwenden? Es hat kein übergeordnetes Element! Es spielt keine Rolle, für geerbte Eigenschaften (einschließlich Schriftgröße) ist der Standardwert für das Stammelement initial. Bei den meisten Browsern beträgt der Anfangswert für Schriftgröße 16 Pixel. Daher beträgt der Wert beim Festlegen der Schriftgröße für das Stammelement immer noch 16 Pixel und 1em entspricht 16 Pixel

<!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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonIst em in CSS relativ zum übergeordneten Element oder zur Größe des aktuellen Elements? (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage