Table des matières
前言
相关css
line-box
font-size
line-height & height
当line-height > font-size时
当line-height
vertical-align
结论
参考
Maison interface Web tutoriel HTML CSS 行内布局实践小结_html/css_WEB-ITnose

CSS 行内布局实践小结_html/css_WEB-ITnose

Jun 24, 2016 am 11:39 AM

前言

通常情况下,要使元素排列在一行内,通常做法就是使用float,然后再清浮动。
如下:

但是如果要使其垂直居中,则必须手动调整,蓝色或者绿色块的位置,比较繁琐。

或者另外一种方法,使用inline-block或inline(即IFC),刚好在这里碰到了点坑。

相关css

IFC(Inline formatting contexts)内联格式上下文,完全不知道什么鬼。
主要影响IFC内布局的css

  • font-size
  • line-height
  • height
  • vertical-aligin

line-box

行盒模型,这是一个显示区域,根据块状容器内,每一行的多个内联元素(inline-level element)都会共同生成一个行盒模型。

font-size

常见的属性,用来指定文本类型节点的大小。IFC内的很多属性的值是基于这个的。

line-height & height

行高在w3c中更明确的定义:

On a block container element whose content is composed of inline-level elements, 'line-height' specifies the minimal height of line boxes within the element.The minimum height consists of a minimum height above the baseline and a minimum depth below it。

在一个由多个内联元素组成的块状容器内,'line-height'为内联元素的行盒模型指定了一个最低高度。
这个最低高度是分别由基线上的最小高度和基线下的最小深度组成。

盗张图的来示意下,从上到下四条线分别是顶线、中线、基线、底线。
那么行高是指上下文本行的基线间的垂直距离,即图中两条红线间垂直距离(实际在数值上,行高也等于其它相同颜色间的距离)。

换种思路来理解下行高。
实际上很多情况下,一个容器中是只有一行的即只有一条基线,行高是如何计算,以确保这个间距呢?
如下:

蓝色是容器的范围,边界线之间是一个line box。文字其中的内联元素。

所以,

当line-height > font-size时

一个为被设定高度的容器被设定一个行高时,内联元内容的上下会增加2个空白内容的高度。而容器的高度也会撑开,使容器的高度与line-height相等。

a1 + b1 +c1 == line-height & a1 == c1

如果容器的高度已经被设定,那么超出容器下边界线的部分则不影响布局。

当line-height

容器未被指定高度时,容器的上下两侧塌陷(类似于margin为负值的情况),但上述公式仍成立。

a1(负值) + b1 + c1(负值) == line-height & a1 == c1

如下所示:

白色是塌陷的部分(即 a1 和 c1),红色是line-height,如果把容器设置为 overflow:hidden,
那么就只能看见红色的部分。

如果容器被指定height高度时,

height > line-height,那么黄线会下移,红色部分会展示更多,
height

所以在这里的情况是,

决定容器高度的优先级 height > line-height > font-size

vertical-align

垂直对齐线,默认为baselien,来自W3C的定义:

This property affects the vertical positioning inside a line box of the boxes generated by an inline-level element.

该属性影响由多个内联元素生成的盒模型组成的行内盒模型的垂直定位

vertical有几个特定的值,或者指定一个值。

<br /><br /><p class="a1">  <span style="vertical-align:60px;">English中文  </span>  <span>中文English  </span></p>
Copier après la connexion

给第一个span,设置60px的垂直偏移量,显示如下:

其中,黄色线就是基线(baseline),绿线和黄线的间隔即为60px。
这里会发现,容器(蓝色)的高度被撑高了。

容器的高度 height = line-height + vertical-align

当然同理,如果容器的高度被指定了,那么高度则不变,而超出的部分则不影响布局。如果设置overflow:hidden,超过的部分则不可见。

而vertical-align的其它特殊值,均可以看做一个根据容器高度而变化的相对值。

结论

熟练使用inline-level element和行内布局的属性,以非常快速完成垂直居中和水平居中的效果,并且有良好的可维护性和拓展性。

参考

W3C IFC
W3C line-height和vertical-aligin
line-height详解

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quel est le but du & lt; Progress & gt; élément? Quel est le but du & lt; Progress & gt; élément? Mar 21, 2025 pm 12:34 PM

L'article traite du HTML & lt; Progress & GT; élément, son but, son style et ses différences par rapport au & lt; mètre & gt; élément. L'objectif principal est de l'utiliser & lt; Progress & gt; pour l'achèvement des tâches et & lt; mètre & gt; pour stati

Quel est le but du & lt; datalist & gt; élément? Quel est le but du & lt; datalist & gt; élément? Mar 21, 2025 pm 12:33 PM

L'article traite du HTML & lt; Datalist & GT; élément, qui améliore les formulaires en fournissant des suggestions de saisie semi-automatique, en améliorant l'expérience utilisateur et en réduisant les erreurs. COMMANDE COMPRES: 159

Quelles sont les meilleures pratiques pour la compatibilité entre les navigateurs dans HTML5? Quelles sont les meilleures pratiques pour la compatibilité entre les navigateurs dans HTML5? Mar 17, 2025 pm 12:20 PM

L'article examine les meilleures pratiques pour assurer la compatibilité des navigateurs de HTML5, en se concentrant sur la détection des fonctionnalités, l'amélioration progressive et les méthodes de test.

Comment utiliser les attributs de validation du formulaire HTML5 pour valider l'entrée utilisateur? Comment utiliser les attributs de validation du formulaire HTML5 pour valider l'entrée utilisateur? Mar 17, 2025 pm 12:27 PM

L'article discute de l'utilisation des attributs de validation de formulaire HTML5 comme les limites requises, motifs, min, max et longueurs pour valider la saisie de l'utilisateur directement dans le navigateur.

Quel est le but du & lt; mètre & gt; élément? Quel est le but du & lt; mètre & gt; élément? Mar 21, 2025 pm 12:35 PM

L'article traite du HTML & lt; mètre & gt; élément, utilisé pour afficher des valeurs scalaires ou fractionnaires dans une plage, et ses applications courantes dans le développement Web. Il différencie & lt; mètre & gt; De & lt; Progress & gt; et ex

Quelle est la balise Meta de la fenêtre? Pourquoi est-ce important pour une conception réactive? Quelle est la balise Meta de la fenêtre? Pourquoi est-ce important pour une conception réactive? Mar 20, 2025 pm 05:56 PM

L'article traite de la balise Meta de la fenêtre, essentielle pour la conception Web réactive sur les appareils mobiles. Il explique comment une utilisation appropriée garantit une mise à l'échelle optimale du contenu et une interaction utilisateur, tandis que la mauvaise utilisation peut entraîner des problèmes de conception et d'accessibilité.

Quel est le but du & lt; iframe & gt; étiqueter? Quelles sont les considérations de sécurité lorsque vous l'utilisez? Quel est le but du & lt; iframe & gt; étiqueter? Quelles sont les considérations de sécurité lorsque vous l'utilisez? Mar 20, 2025 pm 06:05 PM

L'article traite du & lt; iframe & gt; L'objectif de Tag dans l'intégration du contenu externe dans les pages Web, ses utilisations courantes, ses risques de sécurité et ses alternatives telles que les balises d'objet et les API.

Gitee Pages STATIQUE Le déploiement du site Web a échoué: comment dépanner et résoudre les erreurs de fichier unique 404? Gitee Pages STATIQUE Le déploiement du site Web a échoué: comment dépanner et résoudre les erreurs de fichier unique 404? Apr 04, 2025 pm 11:54 PM

GiteEpages STATIQUE Le déploiement du site Web a échoué: 404 Dépannage des erreurs et résolution lors de l'utilisation de Gitee ...

See all articles