vertical-align的简单介绍

我在前几天的文章《CSS文字控制技术总结》中介绍了关于用CSS控制文本的一些属性。其实过程很是纠结,因为当时有其他事在催着我导致文章写的不是很满意。我又比较懒,觉得大致上已经说明完毕不想再改了。今天上午突然觉得有一个知识点我还是简单介绍一下的好。这个就是vertical-align属性。

由于这货的值比较多再加上是在垂直方向来控制文本,所以显的很重要。虽然大多数时候我们不会用到这个属性,但是追求完美的我们肯定不会错过这么精彩的属性的是吧。强迫症伤不起啊!


需要强行记忆的是vertical-align属性只能运用于行内元素才能生效——即display:inline/inline-block;现在引用下vertical-align属性的到底有哪些。

vertical-align属性值

描述
baseline 默认。元素放置在父元素的基线上。
sub 垂直对齐文本的下标。
super 垂直对齐文本的上标
top 把元素的顶端与行中最高元素的顶端对齐
text-top 把元素的顶端与父元素字体的顶端对齐
middle 把此元素放置在父元素的中部。
bottom 把元素的底端与行中最低的元素的底端对齐。
text-bottom 把元素的底端与父元素字体的底端对齐。
length 如:2em、10px。允许使用负值。
% 使用 “line-height” 属性的百分比值来排列此元素。允许使用负值。
inherit 规定应该从父元素继承 vertical-align 属性的值。

在上一篇文章中我也提到了这里面比较重要的概念就是基线(baseline),点了这个技能点我们才能开启vertical-align属性天赋树,也就说它不是过路天赋点而是前置天赋点。继续复习上一篇文章中提到的基线,这里我重新调用一下关于基线的图。

文字排版中几条基准线概念

从上图可以很直观的了解到基线、顶线、中线、底线的含义,而且还附带介绍了行高和行距的概念,买一送一绝对实惠,是不是很激动?前面也说了基线是前置天赋点,想要将最终的vertical-align大招给点出来,还需要升级一些过路天赋。这个大招的前置技能还是很繁琐的,除了开启技能树的“基线”,还有一些其他技能点,而且还要求必须到一定等级。看到这里我想你心里肯定会涌现出一个熟悉的旋律——“知道真相的我眼泪掉下来”

知道真相的我眼泪掉下来

学习本来就是一个循序渐进的过程不是么?一点一点前进总比原地踏步的好。我们要开始深入技能树了……为了我们的大招。除了上述的行高、行距的概念之外还有下面的几个概念需要理解。

内容区

内容区是指底线和顶线包裹的区域(行内元素display:inline可以通过background-color属性显示出来),实际中不一定看得到,但确实存在。内容区的大小依据font-size的值和字数进行变化。

行内框

行内框(inline box)是一个浏览器渲染模型中的一个概念,不能直接观测到无法显示出来,但是它又是确实存在,它的高度就是行高(line-height)指定的高度。

行框

行框(line box),同行内框类似的概念,行框是指本行的一个虚拟的矩形框,也是浏览器渲染模式中的一个概念。行框高度等于本行内所有元素中行内框最大的值(以行高值最大的行内框为基准,其他行内框采用自己的对齐方式向基准对齐,最终计算行框的高度)。

文本行中的每个元素都会生成一个内容区。这个内容区则会生成一个行内框(inline box),当一行中的所有内容均已生成了行内框,那么接下来在行框的构造中就会考虑这些行内框,行框的高度要足以包含最高行内框的顶端和最低行内框的底端。看文字不是很直观,上一个简略图就能一目了然。

行框和行内框

图片总是能很直观将一些文字概念变的很直观。为啥要叨逼叨介绍这么多概念,是因为这些概念和vertical-align属性的值有莫大的关系。世间万物总是有广泛的联系的,没有无缘无故的恨也没有无缘无故的爱。美女愿意嫁给穷逼,也就意味着穷逼很大几率肯定是帅到了让妹子合不拢腿的地步。

有了这些概念作为支撑,对于我们掌控vertical-align各个值的渲染效果有事半功倍的效果。比如我告诉你background-color:red;的时候你的脑海中肯定会跳出一个红色矩形,这个就是我们对background-color的概念理解太深导致的结果。

目前我们已经点了所有的前置技能点和过路技能点,剩下的就是把大招的技能给点出来了,来继续打几个怪吧,经验条已经80%了,升了级就有技能点点大招了。

vertical-align属性值详解

详解
baseline 使元素的基线同基准元素(取行高最高的作为基准)的基线对齐
sub 下标,使元素的基线相对于基准元素的基线降低。移动的幅度由浏览器来决定
super 上标,使元素的基线相对于基准元素的基线升高。移动的幅度由浏览器来决定
top 将元素的行内框的顶端与行框的顶端对齐。
text-top 元素行内框的顶端同文本行的顶线对齐
middle 通常使用在图片上,将图片的垂直方向的中线与文本行的中线对齐。
bottom 把元素的顶端与行中最低的元素的顶端对齐。
text-bottom 元素行内框的底端同文本行的底线对齐
length 如:2em、10px。允许使用负值。
% 使用 “line-height” 属性的来计算。允许使用负值。
inherit 规定应该从父元素继承vertical-align属性的值。

两个表大致上是一样的,不过在了解完相关知识概念之后,知识体系就会从第一个表刷新成第二个表,注意加粗的地方。这个过程就是知识的专业化,而且脑海中也会形成比较清晰的模型,这是有莫大好处的。因为这样会让自己的知识调用的时候变得迅捷无比,时间就是金钱我的朋友!

你可能也注意到了我在两个表格中的百分比值一栏都是用红色的字体来标注的,这个是要提醒我们vertical-align属性的值设置百分比是根据哪一个元素的属性来计算的。vertical-align百分比值的结果是根据line-height的值来计算的。

/*line-height值对vertical-align百分比值的影响*/
p{
  line-height  :  20px;
  vertical-align:  5%;
}

/*上下两个是等价的。*/

p{
  line-height  :  20px;
  vertical-align:  1px;  /*20px*5%=1px*/
}

vertical-align属性在不同厂商和不同版本的浏览器中渲染出来的结果可能会有差异,这是由于各个浏览器厂商在理解行框和行内框等等概念上存在许差异导致的。这点对于现在那些熟练使用前端框架而不去研究CSS基础知识的人来说压根就不是个事儿。如果想要深入理解CSS的基础知识,这点还需要用不同的浏览器去做实验来体会。

vertical-align和行框有千丝万缕的联系,行内框和行框更是密不可分的闺蜜,而行内框又和line-height这个属性有本质上的渊源。那么根据这个逻辑链的推导vertical-align属性和line-height属性肯定也是有相当猛料存在了。

但是考虑了良久决定还是另外开一篇文章用较大的篇幅来专门说明两者的关系吧,这样也能有足够的文字描述清楚,文字又不会多到让人看了一眼就丧失看下去的勇气。

仔细会看下写过的字,发现废话还真是多啊,基础知识介绍的也不够清晰。而且基础知识篇幅过大,很多东西都是已有的。这个我要努力改正尽量多去写一些“私货”出来。最后来个黑丝妹子放松一下。

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,748评论 1 92
  • 1. 前言 前端圈有个“梗”:在面试时,问个css的position属性能刷掉一半人,其中不乏工作四五年的同学。在...
    YjWorld阅读 4,440评论 5 15
  • 前端开发者丨http请求 https:www.rokub.com 前言见解有限, 如有描述不当之处, 请帮忙指出,...
    麋鹿_720a阅读 10,909评论 11 31
  • 今天上午在图书馆准备期末考试,打开古代汉语开始预习,没错,就是预习。很喜欢网上的那句话,期末考试来了,别人在查缺补...
    9月木童阅读 300评论 0 0
  • 时间,不经意间就过得很快,当然,这只是针对个人感觉 晚上本计划弄完点事情,结果洗洗弄弄就到了9点多,再玩玩手机就到...
    落帝阅读 160评论 0 0