【问题标题】:How to remove space at top of <p> tag / align contained text to top of container?如何删除 <p> 标签顶部的空格/将包含的文本对齐到容器顶部?
【发布时间】:2013-12-05 20:36:26
【问题描述】:

这无疑是一个愚蠢的问题,但我今天过得很糟糕,这让我很困惑!

如果您查看http://jsfiddle.net/E6kGP/1/,那么您可以看到 2 个简单的 div 彼此相邻,每个 div 包含一个 p 标签,每个标签具有不同的字体大小和匹配的行高。

在 p 容器的顶部和包含的文本的顶部之间有一个小间隙,这取决于字体大小(和行高)。这意味着每个 p 中文本的顶部不是垂直对齐的。如果行高与字体大小不匹配,那么我可以理解这一点,但如果它们相同,那么行高应该与最高字符匹配,因此第一行的最高点应该是顶部p 容器?显然这可以使用填充/边距或绝对定位来破解,但我想了解为什么这在默认情况下不起作用以及修复它的正确方法是什么?

根据 SO 的要求,来自 jsfiddle 的代码也在下面:

div {float: left; width: 50%;}
p {margin:0 0 1em;padding:0;}
#left p {line-height:36px;font-size:36px;}
#right p {line-height:16px;font-size:16px;}

<div id="left">
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>
<div id="right">
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>

非常感谢大家!

【问题讨论】:

  • 我在你的小提琴顶部没有看到任何空间.....
  • 它在那里你只需要仔细观察,它只有几个像素。

标签: html css vertical-alignment paragraph text-align


【解决方案1】:

可能是为了适应重音字符,尝试将 Ä 放在第一个 &lt;p&gt; 中,额外的空间有助于适应重音。也就是说,我不是 100% 相信这是最终的原因。

您始终可以专门针对 &lt;p&gt; 元素的第一行来减少它,使用:

p::first-line {
    line-height: 0.8em;
}

虽然理所当然,但这并不能解决“为什么”问题。

【讨论】:

  • 我以前看到过这样的问题(但找不到...),他们说这就是原因。
  • 随机查询.....&lt;p&gt; 高度或任何 div 高度不是基于内容......而不是基于 assumed 字符(如你提到的重音字符)不在内容中......????
  • @Mayank 那也是我的假设,搜索一下我没有找到明确的答案,也许浏览器渲染可能是一个因素?
  • 感谢 ExtPro,这确实解释了空间,我尝试按照您的建议添加一个 Ä,并且重音的顶部垂直对齐,这样就解释了为什么会发生这种情况!每个人都认为第一线行高解决方案是最好的吗,这显然会因浏览器而异,但公平地说,我真的看不到另一种选择(除了下面的 BeatAlex 有相同问题的那个)?
  • @BeatAlex :评论中只能通知一个用户,因此将您置于不同的评论中......检查stackoverflow.com/questions/20244305/… :)
【解决方案2】:

正如 ExtPro 所说,它是为了适应重音字符。一个简单的解决方法是使用 margin-top:-&lt;number&gt;px; 以便您手动对齐它。

【讨论】:

  • 不是真正的解决方案,因为浏览器对字体(尤其是网络字体)的处理方式非常不同。你应该让你的设计减轻这个问题。你为什么要使用两种不同的字体大小?
  • 是的,这绝不是最好的解决方案,甚至不是一个好的解决方案。我所说的“简单解决方法”并不是说它“解决”了问题,而是您可以轻松地手动对齐它们。 @DamonGant
  • 正如 Damon 所说,这将在不同的浏览器中以不同的方式显示(但 ExtPro 的解决方案也会如此,但不是这样)。在回答 Damon 关于我们为什么要这样做的问题时,因为这是设计机构希望它的布局方式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 2019-05-20
  • 1970-01-01
相关资源
最近更新 更多