【问题标题】:CSS: Font top marginCSS:字体上边距
【发布时间】:2011-09-11 06:27:01
【问题描述】:

我知道这个问题的标题很愚蠢,但我想不出更好的办法。我已经在这个主题上搜索了几个小时,但要么我搜索出了错误,要么我错过了一些 CSS 基础知识。

我有一个容器 div,其左上角有一个 40x40 像素的背景图像。我想将 h2 标记中的文本顶部与该背景图像的顶部对齐,我曾尝试这样做。

HTML:

<div id="container">
  <h2 id="title">Lorem</h2>
</div>

CSS:

body {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 13px;
}

#container {
    background: url('test-icon.png') top left no-repeat;
    margin: 200px auto; /* To center the container on the page*/
    min-height: 50px;
    padding-left: 50px; /* To prevent the text from "colliding with the background-image"*/
    width: 300px;
}

#title {
    font-family: "Arial Black", Arial, Helvetica, sans-serif;
    font-size: 1.3em;
    text-transform: uppercase;
}

我使用 Eric Meyers CSS reset 来摆脱浏览器特定的样式,但在上面的代码中忽略了这一点。

我创建了一个live example

问题是背景图像和来自 h2 标记的文本顶部不对齐 - 在 h2 标记的顶部有一个小的“边距”。这个边距似乎随着字体大小而变化。当我使用谷歌浏览器检查器时,它告诉我 h2 和 div 标签的边距和填充都是 0px。由于浏览器呈现字体的方式不同,我不想乱用负边距,以防它破坏布局。有没有办法“安全地”摆脱这个利润?完全清楚,我想要实现的是this

【问题讨论】:

  • +1,用于带有代码、测试用例和目标图像的问得很好的问题。很少见。
  • 你试过修改背景图片的顶部位置吗?
  • 这听起来是个好主意——我也会试试的!
  • 您能否将您的示例和目标图像重新发布到某个永久位置?链接现在已断开。
  • @LinusR 更新了损坏的链接。

标签: css fonts margin


【解决方案1】:

我认为您的问题是&lt;h2&gt; 上的line-height。有点摆弄告诉我你想要它:

line-height: 10px;

您可能需要将px 用于您的font-size 以使事情在各种浏览器中始终如一地工作。

【讨论】:

  • 这正是我试图实现的目标,但以更通用的方式。当我阅读了更多关于字体和行高的内容时,我认为如果不摆弄一点就可以做到这一点。谢谢。
  • 唯一失败的情况是文本需要流过 >1 行,当我发现这个问题时,这是我的问题。您可以只使用position: relative; top: -0.3em; 或任何需要的东西,而不是减少行高,但这在浏览器之间可能会不一致。
【解决方案2】:

你试过 line-height: 1; ?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 2012-02-28
    • 2020-04-17
    • 2011-12-13
    • 1970-01-01
    相关资源
    最近更新 更多