多个元素垂直方向对齐方式(vertical-align line-height)

元素的垂直方向对齐,是一个我随便使用的概念,为的是:
表达同一行的元素在垂直方向的对齐方式。

换句话说就是inline或者inline-block元素摆放在同一行时,每个元素在垂直方向上的对齐方式(block元素一个元素就可以占据一行,没必要谈什么在垂直方向的对齐)

由于inline inline block元素的垂直居中是由vertical-align决定的,因此,我们今天就来好好学习一下这个css属性。

vertical align作用于谁呢?

vertical align的默认值是baseline,只能作用域inline 或者inline-block元素对block元素无用

vertical align作用是什么呢?

错误的理解

对于这个问题,我们通常首先会想到的是,在一个大的div中有一个小div,希望这个小div在大div垂直方向的中间。对于这种情况是元素的垂直居中问题,是子元素在父元素中的定位问题.

正确的理解

vertival-align作用于某一个元素的时候,能够决定该元素和其他在同一行的元素之间垂直方向的对齐方式。

vertical align 的值

image.png

根据图中可以看到,当vertical-align设置不同的值的时候,垂直方向对齐的位置应该在哪里。

默认值baseline

如何计算元素的baseline
  • 对于一个有内容的inline-block元素:

    • 如果该元素overflow不是visible:baseline是margin底部边缘
    • 该元素的overflowvisible: baseline是其中最后一个inline元素的baseline
  • 对于一个没有内容的inline-block元素:
    baseline是margin底部边缘

  • 对于一个inline元素:
    inline元素的baseline计算方式如上图

  • 对于img:baseline是margin底部边缘

baseline在不同的设备上出现的问题

对于一个有内容的inline-block元素

  • 安卓:

    • 如果该元素的overflow不是visible: 那么该元素的基线一定是该元素margin底部
    • 如果该元素的overflowvisible: 那么该元素的基线就是最后一个inline元素的baseline
  • ios
    他的基线就是最后一个inline元素的baseline,该元素的baseline不会受到overflow的影响

在同一行的所有按照baseline对齐的元素之间又该如何对齐?

在同一行中,会通过比较所有按照baseline对齐的元素的baseline(注意:一定是比较所有按照baseline对齐的元素,如果某个元素按照top对齐那么就不需要比较这个元素的baseline了)找到最低的baseline作为baseline对齐元素的对齐基准。

image.png

图中的黄线就是baseline

  • 例子:如果此时设置左边的月亮星星图为veritcal-align:top那么这个元素的baseline就不需要参与比较了
    image.png

因此baseline变成了图中的红线

top和bottom

这两个value会比较好理解,当某一个元素被设置了vertical-align是这两个元素之一,那么这个元素就会找到这一行的最高处或者最低处,和自己的最高或者最低处对齐

  • 例子
image.png

如上图,月亮星星图的veritcal-align是bottom,那么他就是和这一行的最低处对齐

当我把最后一个橘色div的veritcal-align改成bottom之后,整个这一行的最低处就提高了一些,此时月亮星星图以及div都是按照最低处对齐的

image.png

middle

将元素盒子的垂直中点与父盒子的baseline加上父盒子的x-height的一半位置对齐

由vertical-align造成的一些问题

img和text在一行的时候,img下留的空白

image.png

原因:

  • 同一行中的元素,img的baseline是底部margin边缘,而text的baselinex下边缘。
  • 因此在当前行,图片的baseline作为对齐的基准
  • 但是文字本身是有line-height
    line-height = font-size + 行距
    image.png
  • 因此留白的高度 = 半行距

解决思路 两种方案:

  • 修改对齐方式给img设置vertical-align: middle
  • font-size设置为0

关于第二种方案能解决问题的原因:

line-height和font-size

  • line-height的真正高度=font-size * line-height 因此line-height的值一般是倍数

    image.png

  • 元素中有三行文字,每一行是一个inlineBox,其高对应的css是line-height

  • 在inlineBox里有一个区域叫做contentArea,这里显示的是文字,其高对应的css是font-size。

  • 浏览器自动将contentArea区域设置在inlineBox区域的垂直居中位置。

  • 在默认状况下:
element font-size line-height line-height value
body 16px Normal(1-1.2) 18px (line-height * font-size)

注意: line-height的值为normal,但是normal的真正value并不是很确定,取决于当前你使用font-family,但是范围都在1-1.2之间

因此,当你将你的font-size设置成0,那么即使你不修改line-height的值,inline-box的高度也会变成0,从而使得行距变成0 就不会出现留白了

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,629评论 1 92
  • 1. 前言 前端圈有个“梗”:在面试时,问个css的position属性能刷掉一半人,其中不乏工作四五年的同学。在...
    YjWorld阅读 4,330评论 5 15
  • 这世上比我美的姑娘很多,比我有才情的姑娘也很多,比我贤惠的姑娘还是很多,可这并不令我沮丧,因为我比从前的自己好了很多。
    00慢慢00阅读 162评论 0 0
  • 第一次认识简书,是一个学长介绍给我的。 01 我平时喜欢写点东西,那天和学长聊天的时候,向学长请教一些关于写作的知...
    太太太梓飞阅读 263评论 0 0
  • 最近安徽多地大雪,导致气候极度寒冷。领导们英明,很多单位都调休了。 我们单位也调休,下午四点我座长途汽车回徐州家。...
    娴静雅之阅读 79评论 0 2