博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对齐的根本——浅谈行盒
阅读量:6070 次
发布时间:2019-06-20

本文共 1016 字,大约阅读时间需要 3 分钟。

hot3.png

当我们在一个li元素,或者div元素中填写文本信息的时候,通常会将其居中,使得页面看上去更加的美观。横向居中不用说,方法很多,使用margin,padding,test-align等等方式都可以完成。而纵向居中除了margin,padding等手段之外,最好用的,莫过于line-height.

在我们的盒模型中,有一类叫做行盒。它的默认高度与我们的元素盒一致,当我们需要改变文本的纵向排列时,改变它的大小即可顺利完成。在对文字进行居中排列时,只需要将行高设置为父元素的高度,十分简单,就不多说了。我这里要说的是图片与文字的对齐。

在使用CSS进行图片与文字的对齐操作中,我们一般会使用“vertiacl-align:middle”代码来完成。这种方式是基于行盒的对齐参考线来进行的,因为图片与文字在行盒中默认的对齐参考线是基线,只要将参考线改变成中心线就可以做到。

但是这一步操作并不是万能的,它是会出错的!

下面我们就用实际例子来说明一下:

首先,我写一个a标签,为了让这个a标签居中,我使用了行高来进行纵向排列。

005016_vWZu_1866405.jpg

接下来,我又在a标签的后面插入了一个图片,这个图片的高度与我们的父元素div是相同的。在插入以后,a标签不再居中,而是跑到了下面,这个就是以基线为参考线的结果。

012353_s0tj_1866405.jpg

现在,我来使用“vertiacl-align:middle”对它们进行排列。结果。。。

005728_7mx5_1866405.jpg

我的图片往下面移动了1px。。。。。

解决方法很简单,将之前所设置的行高删除即可。但是造成这种现象的原因是什么呢,我又进一步做了测试,发现当我之前的行高设置的越大,图片下移得越多。但是,当之前行高刚好加上a标签超出父元素的高度时与父元素高度相等时,也不会发生这种现象。比如,我父元素高度为35px,行高设置为33px,不会出现图片下移的情况。

由此我们可以得出结论,是行盒的影响造成了这种现象。

在文字与图片同时存在的情况下,行盒的高度是所有元素行盒的最大值,并不区分元素的类别,也就是说现在行盒的高度其实是这样的:

012630_sXyw_1866405.jpg

可以看到,当我们之前给a标签设置了行高,在插入另一张图片之后,他的实际行高其实已经超过了我们的父元素高度!行盒的中心线也偏离了父元素的中心线。

于是乎,在使用“vertiacl-align:middle进行对齐操作的时候,就出现了图片下移的现象

转载于:https://my.oschina.net/u/1866405/blog/294338

你可能感兴趣的文章
mysql5.7 创建一个超级管理员
查看>>
【框架整合】Maven-SpringMVC3.X+Spring3.X+MyBatis3-日志、JSON解析、表关联查询等均已配置好...
查看>>
要想成为高级Java程序员需要具备哪些知识呢?
查看>>
带着问题去学习--Nginx配置解析(一)
查看>>
onix-文件系统
查看>>
java.io.Serializable浅析
查看>>
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>
NLog文章系列——如何优化日志性能
查看>>
Hadoop安装测试简单记录
查看>>
CentOS6.4关闭触控板
查看>>