垂直文字居中

来源:互联网 发布:ff14猫女捏脸数据 御姐 编辑:程序博客网 时间:2024/06/08 03:49

vertical-align:middle

vertical-align 用来指定行内元素(inline)和行内块级元素(inline-block)或表格单元格(table-cell)元素的垂直对齐方式。

inline和inline-block

对于行内元素和行内块级元素,vertical-alignmiddle的处理方式都是一样的。 
baseline——基线

元素基线与父元素的基线对齐。

middle——垂直居中

元素中垂线与父元素的基线加上小写x一半的高度值对齐。

当我们对想要垂直居中的元素设置vertical-align:middle时,往往得不到我们预想的垂直效果。 
核心代码:

<style>.va{vertical-align: middle;}div{font-size: 36px;margin: 20px auto;border: 1px dashed #000;text-align: center;}.inline{display: inline;font-size: 12px;border: 1px dashed #000;}</style><div>         <span class="va inline">inline垂直居中</span>inline垂直居中</div>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

这里写图片描述

很明显,这个垂直居中的效果没有我们想象中那么好。 
但是如果我们改变策略: 
把设置vertical-align: middle;的元素作为标准,周围的文字就会垂直对齐。 
更加通俗的讲,就是设置vertical-align: middle;的元素更大一点,周围的文字元素要更小一点,就能实现周围文字的垂直居中。 
核心代码

<style>.va{vertical-align: middle;}div{font-size: 12px;//更改了大小margin: 20px auto;border: 1px dashed #000;text-align: center;}.inline{display: inline;font-size: 36px;//更改了大小border: 1px dashed #000;}</style><div>         <span class="va inline">inline垂直居中</span>    inline垂直居中</div>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

这里写图片描述 
这才是我们想要的垂直居中的效果。


table-cell

baseline——基线 (与sub, super, text-top, text-bottom, <length>, <percentage>等属性具有同样的效果)

与同行单元格的基线对齐。

middle——垂直居中

单元格垂直居中

本文讨论的是文体垂直居中,该属性的情况就不深入讨论了。


line-height + height

当line-height等于height时,可以实现字体垂直居中。 
具体实现: 
目标元素(字体)的line-height大小等于父类元素的height大小,可以实现垂直居中。 
核心代码:

<style>* { margin: 0;padding: 0;}div{width: 300px;height: 100px;//父类元素高度margin: 20px auto;border: 1px dashed #000;text-align: center;}.lh{font-size:24px;line-height:100px; //目标垂直字体的行高}</style><div>          <span class="lh">inline垂直居中</span></div>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

这里写图片描述


行内块级元素垂直居中+vertical-align:top

这种方法比较麻烦,但是适用于更多的场合。 
实现过程如下: 
1. 更改字体所在的元素为display:inline-blockposition:relative; 
2. 设置字体的line-heightfont-size相等; 
3. 设置字体所在元素,top:50%;vertical-align:topmargin-top为负的font-size大小的一半。

核心代码

<style>* { margin: 0;padding: 0;} div{width: 300px;height: 100px;margin: 20px auto;border: 1px dashed #000;text-align: center;}.middle{display: inline-block;position:relative;font-size:24px;line-height:24px;top:50%;margin-top:-12px;vertical-align:top; }</style><div>         <span class="middle">inline垂直居中</span></div>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

这里写图片描述

实现的思路: 
1. 将字体放置到一个行内块级元素中 
2. 将行内块级元素垂直居中

细节说明:

  • display:inline-blockspan元素变成一个行内块级元素,配合position:relative;top:50%;margin-top:-12px;可以实现块级元素垂直居中。

  • font-sizeline-height相等是为了保证span元素的高度不被行间距所影响,高度只由font-size控制,方便了margin-top的设置。

  • vertical-align:top是为了保证字体是顶格的,让文体看起来更像是垂直居中。

前两条估计大家都懂,我来详细说说最后一条vertical-align:top

行内框

vertical-align:top 
把元素的顶端与行中最高元素的顶端对齐。

我们先来看看 
vertical-align:baseline | middle | top 这三种的效果。 
基线的效果: 
这里写图片描述

中线的效果: 
这里写图片描述

顶线的效果: 
这里写图片描述

我们可以这样想象: 
由于我们设置了position:relative;top:50%;margin-top:-12px;,这相当于从上向下排列元素。 
如果我们要保证字体也垂直居中,也必须字体在元素内部的从上到下排列(也就是所说的顶格),所以需要设置vertical-align:top

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 4个月宝宝母乳不够吃怎么办 11个月宝宝只吃母乳怎么办 10个月宝宝突然不吃母乳怎么办 2个月宝宝咳嗽怎么办是吃母乳的 九个月宝宝不喜欢吃粥和米糊怎么办 9个月宝宝突然不吃辅食怎么办 宝贝8个月不吃辅食怎么办 11个月宝贝不吃辅食怎么办 十一个月宝宝长牙不吃辅食怎么办 八个多月的宝宝不爱吃辅食怎么办 7个月的宝宝不爱吃辅食怎么办 宝宝只吃母乳不吃辅食怎么办 10个月的宝宝不肯吃勺子怎么办 十一个月大宝宝不吃奶吃饭怎么办 十一个月宝宝光吃奶不吃饭怎么办 20个月宝宝爱吃奶不爱吃饭怎么办 宝宝8个多月不肯米糊跟粥怎么办 8个月宝宝突然不肯吃米糊了怎么办 八个月宝宝突然不吃辅食怎么办 八个月宝宝拉屎费劲还干怎么办 两个月的小孩不喜欢吃奶粉怎么办 三个多月的宝宝不爱吃奶怎么办 4个月的宝宝不吃奶怎么办 九个月宝宝一直高烧不退怎么办 8个月宝宝不吃辅食怎么办 孩子七个月了母乳不够了怎么办 11个月宝宝吃的太多怎么办 宝宝十一个月了上火眼死太多怎么办 9个月孩子不吃辅食怎么办 y一夜没有睡好现在母乳不够怎么办 喂母乳的婴儿总要吃奶怎么办 宝宝四个月了奶水不够吃怎么办 宝宝出生十天了奶水不够吃怎么办 宝宝晚上不吃奶了奶水多怎么办 我家小孩六个月了奶不够吃怎么办 六个月的宝宝奶不够吃怎么办 宝贝六个月了奶不够吃怎么办 奶不够吃宝宝又不吃奶粉怎么办 婴儿到新环境哭闹不睡觉怎么办 婴儿到陌生地方狂哭不止怎么办 在家里遇到有人有陌生人敲门怎么办