这并不意味着我有很多段落,每个段落都只有一行。我只有一个段落,其中包含足够的内容,使其换行成多行。在文本的任何地方(任何地方)可能会有一个或。这会通过在上方/下方添加额外的间距来影响该行的行高。如果我在段落上设置更大的行高,这对问题没有任何影响。行高增加了,但额外的间距仍然存在。
我该如何使其保持一致 - 即所有行的间距都相同,无论它们是否包含?
您的解决方案必须支持跨浏览器(IE 6+,Firefox,Safari,Opera,Chrome)。
这并不意味着我有很多段落,每个段落都只有一行。我只有一个段落,其中包含足够的内容,使其换行成多行。在文本的任何地方(任何地方)可能会有一个或。这会通过在上方/下方添加额外的间距来影响该行的行高。如果我在段落上设置更大的行高,这对问题没有任何影响。行高增加了,但额外的间距仍然存在。
我该如何使其保持一致 - 即所有行的间距都相同,无论它们是否包含?
您的解决方案必须支持跨浏览器(IE 6+,Firefox,Safari,Opera,Chrome)。
设置行高确实可以解决问题,但您可能需要将其设置得很大:在我的设置中,我必须将行高增加到大约1.8才能使<sup>
不再干扰它,但这会因字体而异。
获得一致的行高的一种可能的方法是设置自己的上标样式,而不是使用默认的vertical-align:super
。如果您使用top
,它将不会向行框添加任何内容,但您可能还需要进一步减小字体大小以适应它:
sup { vertical-align: top; font-size: 0.6em; }
你可以尝试使用定位来将其向上移动一点而不影响行框:
sup { vertical-align: top; position: relative; top: -0.5em; }
当然,如果你的行高不够,这样做就有撞上上一行的风险。sup {
line-height: 0;
/* The following rules (or similar) likely come from browser
* style and are not needed
*/
font-size: 0.83em;
vertical-align: super;
}
诀窍在于将<sup>
的行高设置为0。@Scott建议使用normal,但这并不总是有效。
这意味着您不必更改周围文本的行高以适应上标文本。我已在IE7+和其他主要浏览器中进行了测试。
line-height
属性发生冲突。当然,如果整体的 line-height
设置得太小,仍然可能会与前一行发生交叉。 - Chris Krycholine-height: 100%
。 - Matthias Hauertline-height
的可能值为0、1、1em和100%。所有这些值在Chrome和Firefox中肯定都有效。 - ClarkeyBoy我也遇到了同样的问题,但是所有给出的答案都没有生效。不过我发现一个 Git 提交记录,其中包含一个有效的解决方案:
sup {
font-size: 0.8em;
line-height: 0;
position: relative;
vertical-align: baseline;
top: -0.5em;
}
保持简单:
sup { vertical-align: text-top; }
[字体大小取决于您的个人字体]
我更倾向于这里提出的解决方案 (链接),以这个 jsfiddle 为例:
CSS:
sup, sub {
vertical-align: baseline;
position: relative;
top: -0.2em;
}
sub {
top: 0.2em;
}
HTML:
<span>The following equation is perhaps the most well known of all: </span><span id="box">E<sub>a</sub> = mc<sup>2</sup></span><span>. And it gives an opportunity to try out a superscript and even throw in a superfluous subscript! I'm sure that Einstein would be pleased.</span>.
0.2em
来适应您的要求。sup, sub {
vertical-align: baseline;
position: relative;
top: -0.4em;
}
sub {
top: 0.4em;
}
我只需要在页面的一个部分更改默认的<sup>行为,因此我在那里应用了一个类。对于我来说,垂直对齐:顶部效果非常好,向上调整约4个像素。
sup.my-class {
vertical-align: top;
position: relative;
top: -4px;
}
<sup>
标签影响两行之间的间距的原因与多个因素有关,包括行高、上标字体大小与普通字体大小之比、上标的行高以及上标底部的对齐方式等。如果将普通文本的行高设置为"隧道带"(这是我称之为的),即135%,那么普通文本(100%)会增加35%或更多的空白填充。对于一个段落来说,是这样的: p
{
line-height: 135%;
}
sup
{
font-size: 70%;
vertical-align: text-middle;
line-height: 0;
}
我更喜欢在 vertical-align
上使用 length
。这会将元素的基线与其父元素的基线相差给定的长度对齐。
sup {
font-size: .83em;
vertical-align: 0.25em;
line-height: 0;
}
这是我的代码正常运作:
<div>
<span>line</span><br/>
<span>span styled with vertical align super</span><span style="vertical-align:super;">1</span><br/>
<span>line</span><br/>
<span>same as before but line height set to 0</span><span style="vertical-align:super; line-height:0; font-size:.75em">1</span><br/>
<span>line</span><br/>
<span>now using sup tag and sup class with line height 0</span><sup style="line-height: 0">1</sup><br/>
<span>line</span>
</div>
vertical-align: bottom
(虽然不如使用top
效果明显),再配合使用position:relative;
和一个正值的top
属性。 - bobince