本文介绍: 一个inlineblock元素,如果里面没有inline内联元素或者overflow不是visible,则该元素的基线就是margin边缘,否则,其基线就是元素里面最后行内联元素的基线。发现一个很奇怪的现象:我们本来期待的是两个对齐,表现却是错位的。所以第一个框的底部和后一个元素中的文字基线对齐了,可以看到默认情况下并没有实现垂直居中对齐。如果两个元素都没有文本,同样是对齐的。发现没有居中对齐,有种失效的感觉。如果两个元素都有文本,则是对齐的。方案二:图片元素居中对齐

两个行内块元素垂直居中对齐

先看一段代码

<style>
.box {
    width: 200px;
    height: 200px;
    line-height: 200px;
    font-size: 20px;
    text-align: center;
    display: inline-block;
    background-color: green;
  }
</style>

<div class="box"&gt;</div>
<div class="box">box</div>

显示效果
在这里插入图片描述
发现一个很奇怪的现象:我们本来期待的是两个框对齐,表现却是错位的

原因是:
一个inlineblock元素,如果里面没有inline内联元素,或者overflow不是visible,则该元素的基线就是margin边缘,否则,其基线就是元素里面最后行内联元素的基线。

所以第一个框的底部和后一个元素中的文字基线对齐了,

如果两个元素都有文本,则是对齐的

在这里插入图片描述

如果两个元素都没有文本,同样是对齐的
在这里插入图片描述
尝试增加对齐属性

.middle {
  vertical-align: middle;
}

第一个元素上增加

<div class="box middle"></div>
<div class="box">box</div>

发现还是没有对齐,还是有一点点错位
在这里插入图片描述
尝试第二个元素上增加

<div class="box"></div>
<div class="box middle">box</div>

发现没有居中对齐,有种失效的感觉
在这里插入图片描述
解决办法

第一个盒子对齐方式改为顶部底部对齐

.top {
  vertical-align: top;
}
<div class="box top"></div>
<div class="box">box</div>

表现如下
在这里插入图片描述

图片垂直居中问题

<style>
.box {
   background-color: green;
 }
</style>

<div class="box">
 <img class="image" src="./mm.jpg" alt="" />
</div>

图片没有居中显示底部多出了一个间隙

在这里插入图片描述

实现图片垂直居中对齐

方案一:修改图片元素为块级元素

.image {
  display: block; 
}

方案二:图片元素居中对齐

.image {
  vertical-align: middle;
}

方案三:父级元素行高改为0

.box {
    line-height: 0;
}

方案四:父级元素字体大小改为0

.box {
    font-size: 0;
}

在这里插入图片描述

图片文字垂直居中对齐

一个很常见需求用户头像用户名并排显示

<style>
  .box {
    background-color: green;
  }

  .image {
    border-radius: 50%;
    width: 30px;
    height: 30px;
    object-fit: cover;
  }

  .text {
    background-color: red;
    color: #fff;
  }
</style>

<div class="box">
  <img class="image" src="./mm.jpg" alt="" />
  <span class="text">我是一段文字</span>
</div>

可以看到,默认情况下并没有实现垂直居中对齐
在这里插入图片描述

改造如下

<style>
 .box {
   background-color: green;
   
 }
 .image {
   vertical-align: middle;
   border-radius: 50%;
   width: 30px;
   height: 30px;
   object-fit: cover;
 }

 .text {
   background-color: red;
   color: #fff;
   font-size: 12px;
   vertical-align: middle;
 }
</style>

<div class="box">
 <img class="image" src="./mm.jpg" alt="" />
 <span class="text">我是一段文字</span>
</div>

实现效果如下
在这里插入图片描述

参考文章

  1. CSS深入理解vertical-align和line-height的基友关系

原文地址:https://blog.csdn.net/mouday/article/details/134344409

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_47662.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注