【问题标题】:How to pixel-perfect align text to the top of the div?如何像素完美地将文本对齐到 div 的顶部?
【发布时间】:2019-07-10 22:45:05
【问题描述】:

我正在尝试调整文本以与 div 的顶部完全对齐,以便最高字符的顶部“接触”div 的顶部。无论具体尺寸如何,我都需要一个可扩展的解决方案,它可以包括 CSS 和 JS 操作/计算。我知道表格、表格单元格和垂直对齐,但这些仍然不能将文本完全移到顶部。

这里是一个例子:https://codepen.io/saar62097/pen/MMLmyr

#container {
  position: absolute;
  background-color: black;
  width: 300px;
  height: 250px;
}

#text {
  color: white;
  font-size: 60px
}
<div id="container">
  <div id="text">hello world<br>how r u?</div>
</div>

我希望文本“触摸”div 的顶部。 有任何想法吗?谢谢!

【问题讨论】:

  • 它已经触顶了。加ÂÄÊ看看
  • 熟悉typography 的语义可能有助于识别您将在此处遇到的各种“陷阱”场景。

标签: html css vertical-alignment


【解决方案1】:

我添加了一个 line-height 并对其进行了更改,直到它与 'touching' div 边距相匹配。由于 top: 0; 不适用于文本。

#container{
  position: absolute;
  background-color: black;
  width: 300px;
  height: 250px;
  padding: 0;
}

#text{
  top: 0;
  color: white;
  padding: 0;
  font-size: 60px;
  line-height: 43px;
}
<div id="container">
  <div id="text">hello world<br>how r u?</div>
</div>

【讨论】:

  • 如果我们改变字体大小,我们也必须改变行高,没有通用的方法来做到这一点。我认为改变这两个值并不难。
【解决方案2】:

尝试使用排版单元来定位它。例如,我在em 中使用了负边距来测试不同的字体大小。

#container {
  position: absolute;
  background-color: black;
  width: 300px;
  height: 250px;
}

#text {
  color: white;
  font-size: 60px;
  margin-top: -0.25em; /* Negative margins in typography Unit */
}

#container2 {
  position: absolute;
  background-color: black;
  width: 300px;
  height: 250px;
  margin-left: 350px;
}

#text2 {
  font-size: 30px; /* Half the font-size */
  color: white;
  margin-top: -0.25em;
}
<div id="container">
  <div id="text">hello world<br>how r u?</div>
</div>

<div id="container2">
  <div id="text2">hello world<br>how r u?</div>
</div>

【讨论】:

  • 请注意,这通常 高度依赖于字体。适用于一种字体的不一定适用于另一种字体。这完全取决于字形和盒子大小。
  • @Paulie_D 您是否看到任何跨字体解决方案?与 hack 结合使用时,是否有任何 CSS hack,例如 w3.org/TR/css-fonts-4/#font-size-adjust-prop。我看到 CSS 自上次以来已经发展了很长时间,以至于我无法找到一篇文章。
  • 不...字体彼此之间高度不同。字形框通常都有不同的大小。该空间存在 出于某种原因(使多行文本可读),我们不应该鼓励(理想情况下)将其覆盖。这并不是说可能没有没有垂直间距的特定字体,但我不知道有任何例子。
猜你喜欢
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-19
  • 2010-12-17
  • 1970-01-01
  • 2015-12-29
  • 2018-10-09
相关资源
最近更新 更多