如何在移动游猎中垂直对齐小写文本?

yur*_*y-n -3 css mobile-safari

有一个div

height: 15px;
line-height: 15px;
Run Code Online (Sandbox Code Playgroud)

我得到这些结果:

在此输入图像描述 在此输入图像描述

我可以使用什么css将文本对齐到中间而不管它的情况如何?

Bal*_*zar 7

您还可以使用table-celldisplay,它与大多数浏览器版本兼容.

然后你只需要使用text-alignvertical-align使其完美居中.

body, html {
  height: 100%;
}

body {
  margin: 3rem;
}

span {
    background-color: #4900CE;
    color: white;
    border-radius: 500px;
    padding: 1rem;
    min-width: 2.5rem;
    
    text-align: center;
    display: table-cell;
    vertical-align: middle;
}
Run Code Online (Sandbox Code Playgroud)
<span>ONE</span>
<br>
<span>one</span>
Run Code Online (Sandbox Code Playgroud)

我已经继续使用Browserstack在大多数iOS浏览器中测试此代码.你可以在这里找到所有的结果(他们的一些主机被打破,因此白色镜头).


您也可以使用类似的方法使用flexbox

span {
  display: flex;
  justify-content: center;
  align-items: center;
}
Run Code Online (Sandbox Code Playgroud)

  • 对文本进行v对齐很容易,但问题是如何"将文本对齐到中间而不管其大小写".使用小写它看起来不对齐(就像OP发布的截图一样) (7认同)

Gus*_*Wal 6

我认为你最好的选择是emex这里一起工作。

我注意到大写字母默认情况下似乎是垂直居中的。大多数时候,它们的高度约为三分之二1em而小写字母的高度几乎总是精确的 1ex

知道这些后,您可以为小写字母指定偏移量calc(((-1em / 1.5) + 1ex) / 2),这会将文本向上移动大写字母大小的一半,向下移动小写字母大小的一半。
为了能够做到这一点,您必须进行一些填充技巧,或者简单地将文本包装到另一个元素中,例如span.

看看这个小提琴

html, body { height: 100% } *, ::before, ::after { position: relative }

.flex {
  display: flex;
  align-items: center;
  justify-content: center;
}

.flex.sans {
  font-family: sans-serif;
}

.flex div {
  font-size: 17vh;
  background-color: #40C;
  color: white;
  border-radius: 1000px;
  padding: .5em 1em;
  margin: .25em;
}

@media (max-width: 200vh) { .flex div { font-size: 8.5vw } }

.flex div::after {
  content: '';
  display: block;
  position: absolute;
  top: calc(50% - .5px);
  left: 0;
  right: 0;
  height: 1px;
  background-color: #FFF;
}

.flex.centered div:last-child span {
  top: calc(((-1em / 1.5) + 1ex) / 2);
}
Run Code Online (Sandbox Code Playgroud)
<div class="flex">
  Not centered<div><span>ONE</span></div><div><span>one</span></div>
</div>
<div class="flex centered">
  Centered<div><span>ONE</span></div><div><span>one</span></div>
</div>
<div class="flex sans">
  Not centered<div><span>ONE</span></div><div><span>one</span></div>
</div>
<div class="flex centered sans">
  Centered<div><span>ONE</span></div><div><span>one</span></div>
</div>
Run Code Online (Sandbox Code Playgroud)

这很有可能立即发挥作用。如果没有,您可以尝试更改1.5为其他值,例如1.41.75