如何在 CSS 中实现负填充?

新手上路,请多包涵

我正在寻找一种在 CSS 中有效实现负填充的方法。

问题

我的网页上有一个 h1 元素,目前有以下代码与之关联:

 h1 {
  background-color: #375E97;
  color: #FFFFFF;
  font-size: 50px;
  font-family: 'Righteous', cursive;
  text-transform: uppercase;
  text-align: center;
  padding: 0;
  margin: 0 auto;
  height: 49px;
}
 <head>
  <link href="https://fonts.googleapis.com/css?family=Righteous|Roboto:400,700,400i" rel="stylesheet">
</head>

<body>
  <h1>Lorem Ipsun Al</h1>
</body>

您可以看到,由于我添加了: height: 49px; ,文本看起来就像是流入页面的其余部分。我想实现这种外观,而且还针对文本的顶部,而不仅仅是底部。

我试过的

我试过了:

  • paddingmargin 设置为 0 用于 h1
  • 使用 vertical-align 的各种值。
  • height 设置为许多不同的值。
  • Setting all the h1 ’s parent elements’ padding and margin to 0 .

我相信我面临的问题是我使用的字体(和大多数字体)的顶部有一些空间。这就是为什么我希望能够实现负填充,在不移动内容框的情况下将文本在屏幕上向上移动。

原文由 Zack 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 308
2 个回答

它完全取决于您使用的字体,但在您的特定情况下 height: 34pxline-height: 34px; 做你想做的:

 h1 {
  background-color: #375E97;
  color: #FFFFFF;

  font-size: 50px;
  font-family: 'Righteous', cursive;
  text-transform: uppercase;
  text-align: center;

  padding: 0px;
  margin: 0 auto;

  height: 34px;
  line-height: 34px;
}
 <!DOCTYPE html>
<html>

<head>
  <link href="https://fonts.googleapis.com/css?family=Righteous|Roboto:400,700,400i" rel="stylesheet">
</head>

<body>
  <h1>Lorem Ipsun Al</h1>
</body>

</html>

原文由 Johannes 发布,翻译遵循 CC BY-SA 3.0 许可协议

在内部内容上使用负边距来实现与负填充相同的效果。

原文由 stackers 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏