css - 再遇 vertical-align

1. vertical-align 属性值概览

vertical-align 仅对行内元素(inline-block、inline)生效,块元素无效,他是确定子元素的基线相对于父元素基线的位置(垂直方向上的对齐方式),其属性值有:

  1. baseline
  2. top
  3. bottom
  4. text-top
  5. text-bottom
  6. middle
  7. sub
  8. super
  9. 数字

2. 准备

2.1 字体度量

字体度量.png

首先,我们先了解一下字体度量,如上图所示。图中小写字母 x 的底部为 baseline, x 的高度为 x-height,ascender与大写字母的顶部有一定的间距,descender与小写字母 p, y 的底部对齐,这些设置与字体的设置有关,具体的需要去了解字体是怎么做出来的,理解 vertical-align 的各个属性的基础是需要知道这些线的位置。

2.2 line-box

每一行称为一条Line Box,它又是由这一行的许多inline-box组成,它的高度可以直接由line-height决定,line boxes的高度垂直堆叠形成了containing box的高度,就是我们见到的div或是p标签之类的高度了。

3. vertical-align 各个属性的表现一览

下图中第一排为文字内容的表现,第二排为图片的表现,如果这个图让你一眼就看明白了各个属性的具体表现,那么后续的内容均可忽略。黑色的外框是父元素内容区域的边界因为没有设置 margin 和 padding,这个边界也是line-box的边界。

下图中各个颜色的线的意义(从上到下数):

  • 蓝色线(第一条)- ascender
  • 绿色线(第二条)- x-height
  • 红色线(第三条)- middle
  • 橙色线(第四条)- baseline
  • 灰色线(第五条)- descender
vertical-align 各个属性的表现一览.png

4. vertical-align 各个属性详述

在父元素中写入 Xxjpf 作为参考,并在此基础上画出5条参考线,父元素的 baseline 是 x 的底部的线条

4.1 baseline

对齐位置:子元素的 baseline 与父元素 baseline 对齐,即子元素中 x 的底部与父元素中 x 的底部对齐,图片元素的 baseline 以及有宽度和高度的空盒子的baseline均为盒子底部。

如图:

baseline.png
图片-baseline.png

4.2 sub

对齐位置:子元素的 baseline(字母x 的底部)与父元素文字的 descender (灰线)对齐

如图:

sub.png
图片-sub.png

4.3 super

对齐位置:子元素的 baseline(字母x 的底部)与父元素文字的 x-height (绿线)对齐

如图:

super.png
图片-super.png

4.4 top

对齐位置:子元素盒模型的顶部,与 line-box 的顶部对齐。

如图:

top.png
图片-top.png

4.5 middle

对齐位置:子元素盒模型的中线位置与父元素 基线(字母x 的底部)+ 半个x的高度的位置(红线)对齐

图例中,为了方便查看,我们在子元素的中间画了一条白色的线,可以看到这条白线是与父元素穿过 x 中心的红线对齐。图片上的黑色的线就是图片的中间位置(是在ps上自己画上去的),也可以看到该黑线与穿过 x 中心的红线对齐。同时也可以看出 middle 与 baseline 的差别,文字内容的差距比较小,但图片可以明显看出是不一样的。如图:

middle.png
图片-middle.png

4.6 bottom

对齐位置:子元素盒模型的底部,与 line-box 的底部对齐

如图:

bottom.png
图片-bottom.png

4.7 text-top

对齐位置:子元素盒模型的的顶部与父元素字体的 ascender 线(蓝线)对齐

如图:

text-top.png
图片-text-top.png

4.8 text-bottom

对齐位置:子元素盒模型的的顶部与父元素字体的 descender 线(灰线)对齐

如图:

text-bottom
图片-text-botton.png

4.9 数字

对齐位置:以 baseline 为中心线上下移动指定像素量,正数为向上移动,负数为向下移动

子元素 baseline 与父元素 baseline 对齐的前提下,正数(eg:2px)代表相对于baseline 位置上移指定的像素,负数(-2px)代表相对于 baseline位置 下移指定的像素

5. 总结

vertical-align 只对行内元素生效,

有些属性需要找准子元素的基线,如:baseline, sub, super

还有一些属性需要确认子元素的盒模型的范围,如:top, middle, bottom, text-top, text-bottom

属性值 对齐位置
baseline 子元素的 baseline 与父元素 baseline 对齐
sub 子元素的 baseline 与父元素 x-heignt (绿线对齐)
super 子元素的 baseline 与父元素 descender(灰线)对齐
top 子元素盒模型顶部与父元素 line-box 顶部对齐
middle 子元素盒模型的中线与父元素 baseline + 半个 x 的高度位置(红线)对齐
bottom 子元素盒模型底部与父元素 line-box 底部对齐
text-top 子元素盒模型的顶部与父元素 ascender 线(蓝线)对齐
text-bottom 子元素盒模型的底部与父元素 descender 线(灰线)对齐
数字 以 baseline 为中心线上下移动指定像素量,正数为向上移动,负数为向下移动

6. 思考

如果子元素的内容有换行,如何确定baseline?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342