如何使用 CSS 减少文本行之间的垂直间距?

Posted

技术标签:

【中文标题】如何使用 CSS 减少文本行之间的垂直间距?【英文标题】:How can I reduce the amount of vertical space between lines of text using CSS? 【发布时间】:2015-07-14 11:53:23 【问题描述】:

“显而易见”的答案是使用 line-height CSS 规则,但这段代码(我确实使用它的地方):

private void GenerateSection7()

    var headerFirstPart = new Label
    
        CssClass = "finaff-webform-field-label",
        Text = "<h2><strong>Section 7: Submit Information </strong></h2>"
    ;
    headerFirstPart.Style.Add("display", "inline-block");
    headerFirstPart.Style.Add("white-space", "pre");
    headerFirstPart.Style.Add("line-height", "20%");
    var headerSecondPart = new Label
    
        CssClass = "finaff-webform-field-label",
        Text = " (This payment is subject to post audit review by Financial Affairs)"
    ;
    headerSecondPart.Style.Add("display", "inline-block");
    headerFirstPart.Style.Add("line-height", "20%");
    this.Controls.Add(headerFirstPart);
    this.Controls.Add(headerSecondPart);

    var submissionInstructions = new Label
    
        CssClass = "finaff-webform-field-label",
        Text = "<h4>Submit completed and approved form to Mail stop: FAST/AP Office</h4>"
    ;
    this.Controls.Add(submissionInstructions);

...产生这个结果:

如您所见,Cumberland 差距可能介于这两条线之间。我从 80% 开始并不断降低百分比,但这没有什么区别 - 20% 不比 50% 好(不比 80% 好)。

我怎样才能收紧字里行间的“玩”?

更新

在 oriol 和 quinnuendo 的推动下,我将代码更改为:

private void GenerateSection7()

    var headerFirstPart = new Label
    
        CssClass = "finaff-webform-field-label",
        Text = "<h2><strong>Section 7: Submit Information </strong></h2>"
    ;
    headerFirstPart.Style.Add("display", "inline-block");
    headerFirstPart.Style.Add("white-space", "pre");
    //headerFirstPart.Style.Add("line-height", "20%");
    headerFirstPart.Style.Add("margin", "0");
    var headerSecondPart = new Label
    
        CssClass = "finaff-webform-field-label",
        Text = " (This payment is subject to post audit review by Financial Affairs)"
    ;
    headerSecondPart.Style.Add("display", "inline-block");
    //headerSecondPart.Style.Add("line-height", "20%");
    headerFirstPart.Style.Add("margin", "0");
    this.Controls.Add(headerFirstPart);
    this.Controls.Add(headerSecondPart);

    var submissionInstructions = new Label
    
        CssClass = "finaff-webform-field-label",
        Text = "<h4>Submit completed and approved form to Mail stop: FAST/AP Office</h4>"
    ;
    submissionInstructions.Style.Add("margin", "0");
    this.Controls.Add(submissionInstructions);

...但它仍然生成完全相同的页面(最后两行之间的大峡谷阻止了 Evel Kneivel 安全地穿越广阔)。

注意:我尝试了“0”(如上所示)和“0px”作为边距值,结果都相同。

【问题讨论】:

【参考方案1】:

行高不是这里的问题。问题是元素之间的空间,它由margin 属性控制。

这些往往被预设为允许“正常”文本流的一些值,因此您将在标题前后以及段落周围留出空间。

标题有不同数量的margin-topmargin-bottom,具体取决于标题的级别(h2 将超过 h4)。例如有时是“1em”(当前字体中大写 M 的宽度)。

所以你会想要减少这些,或者直接将它们设置为 0 并从那里进行实验。需要为实际标题(h4、h2 或其他)而不是为包含元素设置边距,它们将继承它。对于初始实验,您可以尝试直接在代码中应用所有内容,例如 &lt;h4 style='margin:0px'&gt; ....。要获得适当的解决方案,您需要为特定情况定义实际的 CSS 表,将类引入标题或周围的 div 或类似物。

在某些情况下,您可能还需要查看 padding 属性以完全控制间距。

【讨论】:

关于问题中的更新:需要为实际标题设置边距 - h4 和 h2,而不是包含元素,它们不会继承它。因此,首先尝试直接在代码中使用“

....”之类的内容。您可能还想在某些周围的 div 或其他东西中为特定情况定义实际的 css 表。

【参考方案2】:

问题不是line-height,而是元素之间的垂直边距。还有headerSecondPart 是未标记的事实。

请参阅example 了解解决方案。

【讨论】:

以上是关于如何使用 CSS 减少文本行之间的垂直间距?的主要内容,如果未能解决你的问题,请参考以下文章

WEB上的垂直间距?

使用批处理的随机文本行

在 100% 高度的 div 中垂直居中文本?

CSS标签显示模式 ④ ( 标签显示模式示例 | 设置行内元素宽高 | 设置鼠标经过样式 | 设置文字水平居中 | 设置文字垂直居中 | 文本行高与盒子高度关系 )

在 UICollectionView 中显示图像 - 如何实现图像之间的固定垂直间距?

如何删除GridView行之间的垂直空间