CSS - 正确的文本垂直居中对齐[重复]

Posted

技术标签:

【中文标题】CSS - 正确的文本垂直居中对齐[重复]【英文标题】:CSS - correct text vertical center align [duplicate] 【发布时间】:2019-08-20 03:12:13 【问题描述】:

我需要在 div 的中心垂直对齐文本。我找到了很多方法,但它们都不尊重文本的确切内容——我说的是文本行下方的小图形部分——例如字母“ygq”等,例如大写字母使用“YGQ”,但在显示文本时仍然计入。我试过了:

.button 
    height: 20px;
    line-height: 20px;


<div class="button">My text</div> 
<div class="button">MY TEXT</div> 

反之

.button 
    height: 20px;
    display: flex;
    align-items: center;


<div class="button"><p>My text</p></div> 
<div class="button"><p>MY TEXT</p></div> 

我使用 padding 属性,当我确定时,不会显示线下的图形。有没有办法,如何根据文本的确切内容对齐文本?

问题How do I vertically center text with CSS? 没有回答这个问题,因为该解决方案基于“行高”,正如我在问题中提到的那样,它仍然在行下方计算图形。

【问题讨论】:

提到的“重复”问题并不能解决问题 - line-height 包括我在问题中提到的行下方的图形空间。 【参考方案1】:

要使元素垂直居中,您可以将display:flex 与父容器.button 一起使用,并将margin:auto 应用于子元素。

 

.button
    height: 150px;
    display: flex;
    background-color: aliceblue;
 
.button p 
   margin: auto;
    <div class="button">
        <p>My text</p>
    </div>

【讨论】:

【参考方案2】:

试试这个::

.button
  display: flex;
  justify-content: center; /* align horizontal */
  align-items: center; /* align vertical */
<div class="button">
        <p>My text</p>
    </div>

【讨论】:

【参考方案3】:

您可以使用位置和变换将一个项目垂直对齐另一个项目

.button 
    position: relative;


.button p 
    position: absolute;
    top: 50%;
    transform: translateY(-50%);

    /* For horizontal align */
    width: 100%;
    text-align: center;
    <div class="button">
        <p>My text</p>
    </div>

【讨论】:

以上是关于CSS - 正确的文本垂直居中对齐[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在绝对居中的球体中垂直居中文本[重复]

css如何使div里面的文字垂直对齐

转 CSS制作水平垂直居中对齐各种方法总结

p5.j​​s 中垂直居中的文本未正确对齐

CSS制作水平垂直居中对齐 多种方式各有千秋

怎么用CSS样式使文本居中对齐?