内联元素上的 CSS 行高

Posted

技术标签:

【中文标题】内联元素上的 CSS 行高【英文标题】:CSS line-height on inline element 【发布时间】:2018-02-19 22:05:37 【问题描述】:

是否可以更改段落中的行高?

例如,如果我有一个段落或 div 或标签设置为特定的字体大小和行高,并且需要该文本的最后一部分更小,我可以在 p 或 div 内做一个跨度和更改字体大小就好了,但是对行高的任何调整都不起作用。

我知道我可以将跨度更改为块或内联块,但随后会将文本包装在该段落下。如果可能的话,我想保持文本内联运行。

示例@https://jsfiddle.net/fye8bcjx/

p 
  font-size: 18px;
  line-height: 2;


span 
  font-size: 12px;
  line-height: 1;
---
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi.
  <span>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero.
        </span>
</p>

【问题讨论】:

好吧,你的问题中已经有了答案......但真正的问题是你为什么想要这个? 您如何期望在同一行文本上有 2 个不同的行高?这将如何运作? background 添加到您的跨度以查看其line-height:jsfiddle.net/fye8bcjx/13 由于默认vertical-align:baseline,它似乎没有变化 原因是在表单标签上有一些澄清文本。像&lt;label&gt;Where will you be staying while in town? &lt;span&gt;please provide an address and local phone number&lt;/span&gt;&lt;/label&gt; 一样,跨度部分是较小的文本,但是当它换行时,行高使它远离上面的文本。这有意义吗? @TemaniAfif 例如,如果您正在制作标签块列表。大量的用例。看我的回答:) 【参考方案1】:

块容器上的行高(在本例中为&lt;p&gt; 元素)给出了它包含的行的最小行高。因此,如果您希望较小的文本靠得更近,则需要避免为此设置较大的行高。相反,使用内联元素的行高:

p 
  font-size: 18px;
  line-height: 0;


span.primary 
  line-height: 2;


span.secondary 
  font-size: 12px;
  line-height: 1;
---
<p><span class="primary">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi.</span>
  <span class="secondary">Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero.
        </span>
</p>

【讨论】:

嘿,这很好,但是看看如果有更多的文本导致第三行换行第二跨度会发生什么。当第一个跨度的结尾和第二个跨度的开头在同一行时,就好像整个块最终有 3 个不同的行高。嗯。 jsfiddle.net/fye8bcjx/27 没关系 - 只需调整行高和字体大小,使其更具可读性和更少的示例导向就可以了。所以谢谢你的解决方案!!!【参考方案2】:

[更新] 这个答案确实没有解决 OPs 问题。我会寻找其他解决方案。

是的,当然。 内联块正是为此。它具有块的大部分属性,但作用类似于内联元素。

p 
  font-size: 18px;
  line-height: 2;

span 
  font-size: 12px;
  line-height: 1;
  display: inline-block; /* <=== Inline block to the rescue. */

【讨论】:

你清楚地阅读了这个问题 :) i know i can just change the span to a block or inline-block, but then that wraps the text under that paragraph. i'd like to keep the text running inline if possible. ... 运行更多内容的 sn-p,你会看到会发生什么;) 啊,明白了。你说的对!让我看看我能不能带点东西回来:)

以上是关于内联元素上的 CSS 行高的主要内容,如果未能解决你的问题,请参考以下文章

内联和快元素的特点

元素分类--内联块状元素(特点:同行, 可设置宽高和边距)

什么是块级元素和内联级元素

一文读懂块状元素和内联元素

一文读懂块状元素和内联元素

行内元素(内联元素)与块级元素