如何正确使用css中vertical-align
首先明确,vertical-align只对inline-block和inline元素有效。
在说vertical-align之前,需要先说明一下什么是line box。
浏览器中显示的一行会包含多个非block元素(有block元素时就换行了),通过一个box可以把这一行包含起来,这就是一个line box。
比如一个div,他会占据一行,包裹着内部所有非block元素的就是一个line box。
line box的高度,是本行中拥有最高行高的元素的高度。
此时,对拥有最高行高的非block元素设置vertical-align值,会直接影响本行的基线位置(可以说就是设置了本行的基线位置),本行中其他非block元素设置vertical-align时,都是相对于本行的基线位置进行显示。
举例:
<div style="height:100px;width:100px;border:1px solid black;">
<span style="display:inline-block;height:50px;vertical-align:top;border:1px solid black;">1</span>
<span style="vertical-align:top;">2</span>
<span style="vertical-align:middle;">3</span>
<span style="vertical-align:bottom;">4</span>
</div>
<div style="height:100px;width:100px;border:1px solid black;">
<span style="display:inline-block;height:50px;vertical-align:middle;border:1px solid black;">1</span>
<span style="vertical-align:top;">2</span>
<span style="vertical-align:middle;">3</span>
<span style="vertical-align:bottom;">4</span>
</div>
<div style="height:100px;width:100px;border:1px solid black;">
<span style="display:inline-block;height:50px;vertical-align:bottom;border:1px solid black;">1</span>
<span style="vertical-align:top;">2</span>
<span style="vertical-align:middle;">3</span>
<span style="vertical-align:bottom;">4</span>
</div>
会发现显示如下图所示。

1所在的span高度最高,所以其设置的vertical-align会直接影响本行的基线位置。调整1所在的span出现的先后顺序,结果都是一样的。
<div style="height:100px;width:100px;border:1px solid black;">
<span style="vertical-align:top;">2</span>
<span style="vertical-align:middle;">3</span>
<span style="vertical-align:bottom;">4</span>
<span style="display:inline-block;height:50px;vertical-align:top;border:1px solid black;">1</span>
</div>
<div style="height:100px;width:100px;border:1px solid black;"> <span style="vertical-align:top;">2</span>
<span style="vertical-align:middle;">3</span>
<span style="vertical-align:bottom;">4</span>
<span style="display:inline-block;height:50px;vertical-align:middle;border:1px solid black;">1</span>
</div>
<div style="height:100px;width:100px;border:1px solid black;">
<span style="vertical-align:top;">2</span>
<span style="vertical-align:middle;">3</span>
<span style="vertical-align:bottom;">4</span>
<span style="display:inline-block;height:50px;vertical-align:bottom;border:1px solid black;">1</span>
</div>

再举例:
在一个block元素中使用
#parent::before或者#parent::after
{
content:'';
display:inline-block;
height:100%;
vertical-align:middle;
}
可使#parent中的非block元素垂直居中显示,也是上述的原理。
ps:
如果想让1在span中垂直居中显示,保证span的display是inline-block,然后将span的line-height设置为50px,同span高度相等即可。不可设置为100%,最后的line-height只是文字大小的高度。
如何正确使用css中vertical-align的更多相关文章
- 前端知识点回顾之重点篇——CSS中vertical align属性
来源:https://www.cnblogs.com/shuiyi/p/5597187.html 行框的概念 红色(line-height)为行框的顶部和底部,绿色(font-size)为字体的高度, ...
- CSS中强大的EM
(转)作者:dearjohn ,发布于2012-7-31 http://www.uml.org.cn/html/201207311.asp 使用CSS也好久了,但一直都是在使用“px”来设置Web元素 ...
- CSS中设置DIV垂直居中的N种方法 兼容IE浏览器
在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中 ...
- css中的em 简单教程 -- 转
先附上原作的地址: https://www.w3cplus.com/css/px-to-em 习惯性的复制一遍~~~~ -------------------------------我是分界线---- ...
- CSS中的EM属性之弹性布局
这篇教程将引导大家如何使用“em”来创建一个基本的弹性布局,从而学习其如何计算?又是如何使用“em”对层进行弹性扩展?又是如何扩展文本和图像等内容?下在我们就一起带着这些问题开始今天的“em”之行. ...
- 深入理解CSS中的margin
1.css margin可以改变容器的尺寸 元素尺寸 可视尺寸--标准盒子模型中盒子的宽度是不包括margin值的,clientWidth 占据尺寸--包括margin的宽度 outWidth不在标准 ...
- CSS中设置div垂直居中
在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中 ...
- 比较css中单位px,em和rem的区别
国内的设计师大都喜欢用px,而国外网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? px特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原 ...
- CSS中强大的EM(转)
转自:https://www.w3cplus.com/css/px-to-em CSS中强大的EM 作者:大漠 日期:2011-10-27 点击:97370 em 长度单位 编辑推荐:3月31日前,点 ...
随机推荐
- http://blog.csdn.net/z69183787/article/details/37819831
http://blog.csdn.net/z69183787/article/details/37819831
- BestCoder Round #71 (div.2)
数学 1001 KK's Steel 类似斐波那契求和 #include <cstdio> #include <cstring> #include <algorithm& ...
- oracle视图
视图 SELECT -- int.rowner "rgroup owner", -- int.rname "refresh group", mv.owner a ...
- 厉害了,摩托罗拉发布全球首款支持VR和AR的手机MotoZ
目前支持谷歌daydream移动VR生态系统的手机型号并不多,除了谷歌自家的Pixel系列外,还有华为推出的mate9系列.如今又到了一位新成员,即升级到Android 7.0后的Moto Z. 更为 ...
- Codeforces Round #253 (Div. 2) A. Anton and Letters
题目很简单,只需要注意带空格的输入用getline即可 #include <iostream> #include <vector> #include <algorithm ...
- 【HDU】1850 Being a Good Boy in Spring Festival
http://acm.hdu.edu.cn/showproblem.php?pid=1850 题意:同nim...顺便求方案数... #include <cstdio> #include ...
- [奇葩 bug]视图在 ipad5 上正常显示,在 iPad3上超出了边界
一,问题分析 1.理论上 iPad 是按像素点排列的,可 iPad5为什么和 iPad3差别那么大??? 2.iPad3超出边界的视图,都有一个 leading 是superview 的 leadin ...
- 定时器的fireDate指的是触发时间
1.定时器开启后,会在经过设定的时间间隔后才会执行第一次定时操作.而不是立马开启. NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval: ...
- man page分類與說明
轉載自http://itzone.hk/article/article.php?aid=200407152225014657 (如有侵權,請留言或來信告知) 前言 Man page是每位程式設計員及U ...
- 详解C#break ,continue, return
C#编程语法中break ,continue, return这三个常用的关键字的学习对于我们编程开发是十分有用的,那么本文就向你介绍break ,continue, return具体的语法规范. C# ...