如何正确使用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元素垂直居中显示,也是上述的原理。

时间: 2024-12-22 18:07:22

如何正确使用css中vertical-align的相关文章

深入理解CSS中的margin

1.css margin可以改变容器的尺寸 元素尺寸 可视尺寸--标准盒子模型中盒子的宽度是不包括margin值的,clientWidth 占据尺寸--包括margin的宽度 outWidth不在标准之中,jquery中有相对应的方法 margin与可视尺寸 1.1使用那个与没有设定width/height的普通block水平元素 2.2只适用于水平方向尺寸 <body style="background-color:#1a2b3c"> <div style=&quo

CSS中强大的EM

使用CSS也好久了,但一直都是在使用"px"来设置Web元素的相关属性,未敢使用"em".主要原因是,对其并不什么了解,只知道一点概念性的东西,前段时间在项目中要求使用"em"作为单位设置元素,所以从头对"em"学习了一回.稍为有一点理解,今天特意整理了一份博文与大家一起分享,希望对童子们有些许的帮助. 这篇教程将引导大家如何使用"em"来创建一个基本的弹性布局,从而学习其如何计算?又是如何使用"

CSS中的EM 用法解释和分析

篇教程将引导大家如何使用“em”来创建一个基本的弹性布局,从而学习其如何计算?又是如何使用“em”对层进行弹性扩展?又是如何扩展文本和图像等内容?下在我们就一起带着这些问题开始今天的“em”之行. 什么是弹性布局? 用户的文字大小与弹性布局 用户的浏览器默认渲染的文字大小是“16px”,换句话说,Web页面中“body”的文字大小在用户浏览器下默认渲染是“16px”.当然,如果用户愿意他可以改变这种字体大小的设置,用户可以通过UI控件来改变浏览器默认的字体大小. 弹性设计有一个关键地方Web页面

比较css中单位px,em和rem的区别

国内的设计师大都喜欢用px,而国外网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? px特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位: 3. Firefox能够调整px和em,rem,但是96%以上的中国网民使用IE浏览器(或内核). px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的.(引自CSS2.0手册) em是相对长度单位.相对于当前对象内文本的字体尺寸.如

【转载】CSS中强大的EM

转载自:[W3CPLUS]   http://www.w3cplus.com/css/px-to-em 使用CSS也好久了,但一直都是在使用“px”来设置Web元素的相关属性,未敢使用“em”.主要原因是,对其并不什么了解,只知道一点概念性的东西,前段时间在项目中要求使用“em”作为单位设置元素,所以从头对“em”学习了一回.稍为有一点理解,今天特意整理了一份博文与大家一起分享,希望对童子们有些许的帮助. 这篇教程将引导大家如何使用“em”来创建一个基本的弹性布局,从而学习其如何计算?又是如何使

CSS 中 px 和 em

什么是弹性布局? 用户的文字大小与弹性布局 用户的浏览器默认渲染的文字大小是"16px",换句话说,Web页面中"body"的文字大小在用户浏览器下默认渲染是"16px".当然,如果用户愿意他可以改变这种字体大小的设置,用户可以通过UI控件来改变浏览器默认的字体大小. 弹性设计有一个关键地方Web页面中所有元素都使用"em"单位值."em"是一个相对的大小,我们可以这样来设置1em,0.5em,1.5em等

[ css 补充 vertical-align ] css中补充的vertical-align属性讲解

一.关于今天,本文,及其他 今天是个特殊的日子,因为今天是汶川地震两周年的日子,我很悲鸣:今天又是国际护士节,看到微博上护士照横流,我很欣慰. 一段放松的YY后,进入正题.上个月21号,有位同行留言想让我讲讲vertical-align属性,我其实对vertical-align属性也是略知皮毛,要说岂敢谈“讲解”,就说说我对vertical-align属性的一些理解吧,纯属个人见解,若有不准确之处还望见谅.还有,vertical-align属性牵扯到的知识实在是太多了,不是一篇文章就可以讲清楚的

CSS中强大的EM [转]

使用CSS也好久了,但一直都是在使用“px”来设置Web元素的相关属性,未敢使用“em”.主要原因是,对其并不什么了解,只知道一点概念性的东西,前段时间在项目中要求使用“em”作为单位设置元素,所以从头对“em”学习了一回.稍为有一点理解,今天特意整理了一份博文与大家一起分享,希望对童子们有些许的帮助. 这篇教程将引导大家如何使用“em”来创建一个基本的弹性布局,从而学习其如何计算?又是如何使用“em”对层进行弹性扩展?又是如何扩展文本和图像等内容?下在我们就一起带着这些问题开始今天的“em”之

CSS中设置DIV垂直居中的N种方法 兼容IE浏览器

在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才生效,例如表格元素中的<td>.<th>.<caption>等,而像<div>.<span>这样的元素是没有valign特性的,因此使用vertica