css实现文本图标对齐的方法

小灰灰 2020-04-26 07:45 1004阅读 0赞

开发中遇见图片跟文字放在一行显示是最常见不过的了,两个行内元素的对齐通常也是最令人头疼,有时候明明使用了最常用的对齐方法,却总还是有些许偏差,先来看一个最基本的示例:

html部分:

  1. <div class="wrap">
  2. <img src="https://dandelioncloud.cn/u/16339041?s=60&v=4" alt="">
  3. xx测试对齐Style-
  4. </div>

css部分:

  1. .wrap {
  2. width: 300px;
  3. text-align: center;
  4. margin: 20px auto;
  5. font-size: 14px;
  6. }
  7. .wrap img {
  8. width: 20px;
  9. }

未使用对齐方式的效果如下:

默认的对齐方式是 baseline ,也就是x字母的最下面那条线。

这也就回答了第一个问题,浏览器的图片跟文字未额外设置时是基于小写字母x的下边缘为基准,也就是 vertical-align:baseline; 。

常见的几种居中方案

1、使用 vertical-align 居中对齐方式

  1. .wrap {
  2. vertical-align: middle;
  3. }
  4. .wrap img {
  5. vertical-align: middle;
  6. }

当我们使用常用的 vertical-align 对齐文本和图片时,其实也是有一定的偏差的,如下图:

vertical-align 的middle值实际上是相对于小写字母x的一半高度来说的,所以图片会跟x的中间开始对齐,但是其他字符譬如S、中文,就会发现无论如何都会出现稍许偏差,图片会相对而言偏下。

2、使用 vertical-align 同时使用span包裹文本

让我们再稍做改变,将文本部分使用span标签包裹,并且对span使用 vertical-align: middle; 样式对齐。会发现此时图片会上移少许。

效果如下:

3、使用flex布局

  1. display: flex;
  2. align-items: center;

不过就算是flex布局,有时候也会出现一点儿偏差,比如:图片尺寸为偶数、字体font-size为偶数,line-height为偶数时对齐;奇数时偏上1px。

4、使用ex单位

ex就是小写字母x的高度,可以用在不受字体和字号影响的内联元素的垂直居中对齐效果。

PS:不过这种适用于图标高度跟文字一致,比如字符后面加一个箭头(点击展开)的情况,就很实用。

  1. .wrap img {
  2. height: 1ex;
  3. }

5、vertical-align 数值方式的使用

vertical-align 属性值可以使用数值型和百分比值,如,还是上面的基本案列:如果图片高度是20px,文字font-size为22px时,默认对齐是文字的基线,那么图片会偏上2px,这时只需要将图片向下偏移2px,就能实现对齐效果,而且 vertical-align 这个属性的数值型具有很好的兼容性。

  1. .wrap {
  2. width: 100%;
  3. padding-top: 200px;
  4. text-align: center;
  5. margin: 20px auto;
  6. font-size: 22px;
  7. height: 40px;
  8. }
  9. .wrap img {
  10. width: 20px;
  11. vertical-align: -2px;
  12. }

发表评论

表情:
评论列表 (有 0 条评论,1004人围观)

还没有评论,来说两句吧...

相关阅读

    相关 css实现内容两端对齐

    问题描述: 因行边缘出现符号或其它情况导致 行边缘出现多余的空白,如何解决内容区域边缘不期望的空白呢? ![在这里插入图片描述][20201224102447758.p

    相关 css 文本两端对齐

    在做表单时我们经常遇到让上下两个字段对齐的情况,比如姓名, 手机号码, 出生地。这样我们就要用到 text-align, text-justify样式了。 text-alig

    相关 css实现文本图标对齐方法

    开发中遇见图片跟文字放在一行显示是最常见不过的了,两个行内元素的对齐通常也是最令人头疼,有时候明明使用了最常用的对齐方法,却总还是有些许偏差,先来看一个最基本的示例: