Maison > interface Web > tutoriel CSS > le corps du texte

Comment les éléments obtiennent-ils un alignement vertical du texte sans « hauteur de ligne » explicite ?

Linda Hamilton
Libérer: 2024-10-26 07:29:30
original
803 Les gens l'ont consulté

How Do `` Elements Achieve Vertical Text Alignment Without Explicit `line-height`?

L'alignement vertical énigmatique dans Éléments

Dans le monde du développement web, le L’élément nous laisse souvent perplexe avec sa capacité apparemment magique à maintenir son texte centré verticalement. Pour percer ce mystère, analysons un extrait de code HTML et CSS :

<code class="html"><button class="button">Some Text</button>
<div class="button">Some Text</div></code>
Copier après la connexion
<code class="css">.button {
  background: darkgrey;
  height: 40px;
  border: 2px solid grey;
  width: 100%;
  box-sizing: border-box;
  font-size: 14px;
  font-family: helvetica;
  text-align: center;
  margin-bottom: 20px;
}</code>
Copier après la connexion

Dans ce scénario, le texte du L'élément reste centré malgré l'absence d'une propriété explicite de hauteur de ligne.

Plongée dans la magie du navigateur

Lors de l'inspection du rendu du navigateur, nous découvrons un élément caché imbriqué dans le étiqueter. Dans Firefox, cela s'appelle moz-button-content. Cet élément est défini dans la feuille de style de l'agent utilisateur du navigateur comme :

<code class="css">*|*::-moz-button-content {
  display: block;
}</code>
Copier après la connexion

Cet élément caché joue un rôle crucial dans le centrage vertical du texte. Il est configuré pour s'afficher sous forme d'élément de bloc, ce qui fait que l'élément occupe toute la hauteur disponible du bouton. Au sein de cet élément, le texte est naturellement aligné au centre.

Le positionnement vertical codé en dur

Cependant, ce n'est pas toute l'histoire. Les navigateurs utilisent un comportement supplémentaire codé en dur pour elements :

<code class="cpp">// Center child in the block-direction in the button
nscoord extraSpace =
    buttonContentBox.BSize(wm) - contentsDesiredSize.BSize(wm);

childPos.B(wm) = std::max(0, extraSpace / 2);</code>
Copier après la connexion

Ce code démontre que les navigateurs ajoutent intentionnellement un espace supplémentaire des deux côtés du texte dans l'élément moz-button-content, le centrant efficacement verticalement.

Mettre Tout ensemble

En résumé, l'alignement vertical dans éléments découle de deux facteurs :

  • La présence de l'élément moz-button-content, qui affiche le texte sous forme de bloc et l'aligne naturellement au centre.
  • Le problème comportement codé du navigateur qui centre davantage l'élément moz-button-content dans le bouton.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!