css实现图片与文字对齐的多种方式

发布时间:2019-07-19编辑:脚本学堂
本文介绍了css实现图片与文字对齐的多种方法与例子,在css中设置对象的vertical-align属性,以实现文字与图片的对齐效果,并介绍了css实现图片与文字底边对齐的问题与解决方法。

一、css实现图片与文字对齐

在网页中,文字旁边搭配图片时,发现图片比文字靠上,原来默认的情况是图片顶对齐而文字底对齐,通过设置css属性可以使得图片与文字对齐。
 

设置各对象的vertical-align属性,属性说明:
 

baseline-将支持valign特性的对象的内容与基线对齐
sub-垂直对齐文本的下标
super-垂直对齐文本的上标
top-将支持valign特性的对象的内容与对象顶端对齐
text-top-将支持valign特性的对象的文本与对象顶端对齐
middle-将支持valign特性的对象的内容与对象中部对齐
bottom-将支持valign特性的对象的文本与对象底端对齐
text-bottom-将支持valign特性的对象的文本与对象顶端对齐

在此设置为text-bottom即可实现图片与文字位于同一水平线上。

代码:
 

复制代码 代码示例:
<div>
<div>文字与图片对齐方式<span style="vertical-align:middle;"><img src="b-grade.png"></span></div>
<br>
<div>文字与图片对齐方式<span style="vertical-align:baseline"><img src="b-grade.png"></span></div>
<br>
<div>文字与图片对齐方式<img src="b-grade.png"></div>
<br>
<div>文字与图片对齐方式<span style="vertical-align:bottom"><img src="b-grade.png"></span></div>
<br>
<div>文字与图片对齐方式<span style="vertical-align:sub"><img src="b-grade.png"></span></div>
<br>
<div>文字与图片对齐方式<span style="vertical-align:super"><img src="b-grade.png"></span></div>
<br>
<div>文字与图片对齐方式<span style="vertical-align:text-bottom"><img src="b-grade.png"></span></div>
<br>
<div>文字与图片对齐方式<span style="vertical-align:text-top"><img src="b-grade.png"></span></div>
<br>
<div>文字与图片对齐方式<span style="vertical-align:top"><img src="b-grade.png"></span></div>
</div>

二、css实现文字图片水平对齐 vertical-align属性用法

单单将vertical-align 设置为middle 的话,不同浏览器下居中对齐的位置有偏移。

针对vertical-align 做了次分析,对vertical-align 又有了一次深入的了解。

vertical-align 各属性分析

些心得体会:

vertical-align 定义

最初我认为的vertical-align 解释 跟text-align 一样,是容器内部的非block 元素居中对齐,但~~ 我理解错了

从w3c 官方对 vertical-align 各属性的解释来看,vertical-align 是定义当前节点,跟外围内容的对齐方式,跟text-align 的解释是不一样的。

vertical-align:baseline 基线对齐

分析所得,发现baseline不是在中文字的可见部分最下方,而是在英文字的可见部分最下方。

然后发现图片对齐的时候是以图片的最下方同相邻文字的 baseline 对齐。一直觉得为啥图片下方会有4像素的空白,现在明白了

不同字体会有不同效果

我这个demo 用的Tahoma 字体,发现如果使用类似 Yahei 等中文字体,在IE低版本下会有出现一些奇怪的现象,详细可以看demo。

vertical-align 最好不要混用

从定义来理解,就发现这个vertical-align 最好不要混用。因为本身不同属性会产生各种各样的兼容问题,如果混用,估计会出现更复杂的现象。虽然我也没有深入研究,但我觉得混用不太靠谱。

vertical-align: px 定位最稳定

这个属性一直都没怎么用,原先一直用middle 来实现水平对齐,在一次偶尔的项目代码里发现的。

相对定位是相对于baseline的偏差定位,负值代表图片相对baseline往下移。

在研究中发现使用相对定位兼容性最好,只有IE7会有2px的偏差,但基本可以无视,因为目前IE7的用户可以忽略不计。

不过这种方法也不是万能的,

因为是相对于baseline的相对定位,如果文字变大后,图片的对齐位置 看起来就不会跟着移动区别于middle属性,不过个人觉得这样的情况出现概率不大,并且字大了再针对调整也没问题。

另外图片大小不一样大相应的负值也不相同,详细见demo。

高潮:vertical-align 最佳兼容方案

个人推荐的vertical-align 用法如下:

1. 尽量保持主内容的 vertical-align 是baseline 即默认的,不要把vertical-align 当text-align 来理解使用。

2. 针对 内部需要调整位置的 图片等 进行 px 定位。

优点:保证外围的vertical-align 是默认值,不产生混用现象。

缺点:针对不同尺寸的图片要针对进行定位,不过一般ico 大小差不多大,可以统一调整。

三、 css实现图片与文字底边对齐的问题

通常图片与文字放在一起的时候图片往往会偏上,通过设置margin-bottom可以达到文字图片底边对齐的目的

在做网页的时候, 会遇到一个图片和文字位置对不齐的问题.(一般表现在图片总是比文字高点)

解决办法:
一个关键的属性: margin-bottom 通过修改图片的外边框的底部高度就可以让文字移动上来.
做法是把这个值设置为负数.例如我们把下面的16X15的图片设置它的
 

<img src="bottom.gif" style="margin-bottom:-3px">

或在css样式中设置:
 

img {
margin-bottom:-3px;
}
 

这样文字和图片就居中了. 这个值随着图片的大小不同而改变。
---------------
转者按:测试无效。
备注:再测试有用,去除了原来的vertical-align: middle;代码