分享 | 再说图文对齐问题的解决方法

目录

一、遇到的图文问题

二、vertical-align详细属性说明

 三、解决办法

四、行内块错位的问题


一、遇到的图文问题

今天刚说,遇到图文对齐就是我的老大难,然后今天就……又卡住了!

 这是效果图,结构如下:

       <div class="input">
            <img src="./img/搜索小@2x.png">
            <div class="discover">
                <span>资料</span>
                <span>发现</span>
                <span>板块</span>
            </div>
            <button>
                <img src="./img/组 1113@2x.png">
                <span>发布</span>
            </button>
        </div>

怎么说呢,我想要的是discover盒子和img图片是对齐的,明明用了vertical-align 这个属性来调整图文垂直位置,可是没有用!!!

二、vertical-align详细属性说明

我们先来简单说一下vertical-align 这个属性吧.

参数:

baseline:与元素的基线对齐。
middle:与元素中部对齐
sub:字下沉
super:字上升
text-top:文本顶部对齐
text-bottom:文本底部对齐
top:和本行位置最高元素对齐
bottom:和本行位置最低元素对齐

暂时不用我遇到的问题,我们来举一个例子来说明。

    <div class="box">
        <img src="./分享圈(移动端)/img/组件 4 – 1@2x.png" >
        <div class="box1">
            <span>1</span>
            <span>1</span>
            <span>1</span>
            <span>1</span>
        </div>
    </div>
     <style>
        .box{
            width: 200px;
            height: 50px;
            border: 6px solid blue;
            display: flex;
        }
        .box1{
            width: 150px;
            height: 30px;
        }
        img {
            vertical-align: middle;
            width: 30px;
            height: 30px;
        }

        span {
            display: inline-block;
            width: 30px;
            height: 20px;
            text-align: center;
            background-color: orange;
        }
    </style>

可以看到,我们明明给img图片设置了vertical-align:middle,可是还是没有用。这是为什么呢?事实上,一个盒子中可能由多行多个元素组成,vertical-align只作用于在同一行内的元素,它的垂直并不是相对于整个盒子而言的。如果把 vertical-align:middle 放到一个单元格元素,即table的td元素中,它的垂直居中显示是没任何问题的,因为它表示相对于该行的垂直高度居中显示。而在我设定的<div>块中并不只存在一行,因此它无法识别默认显示在顶部。

 三、解决办法

为了解决这个问题,我找到了两种方法:

一个是我们可以设置<span>元素style中的 line-heght 值为其父元素<div>的height值,这样 vertical-align:middle 就会使<span>元素内容垂直居中。

 另外一种方法,就是将要设置垂直居中的元素的父元素style属性添加 display:table-cell 将其作为单元格显示,这样使用 vertical-align:middle 也可以实现垂直居中。

四、行内块错位的问题

今天在找这个问题的时候,无意间看到这样一个问题,就是在一个块元素里有两个行内块元素,一开始两个行内块元素是没有内容的,可以正常对齐;但是当给其中一个行内块元素添加文字时,就会错位,这又是为什么呢?

可以看到,在没有内容的行内块元素是可以水平对齐的,现在我来给其中一个行内块元素加一个内容。

当行内快元素里有文字时,那么前一个盒子文字的基线就是盒子基线,所以第二个盒子会和第一个盒子文字的基线对齐,这也就是错位的原因。

好吧,今天就说到这,希望我遇到的这些坑,大家可以避开~

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值