【发布时间】:2009-10-16 22:11:05
【问题描述】:
我有一个词,它有上标和下标。现在我像这样渲染它word<sub>1</sub><sup>2</sup>
并获得以下信息:
word12.
如何将下标准确地放在上标之下?
【问题讨论】:
标签: html
我有一个词,它有上标和下标。现在我像这样渲染它word<sub>1</sub><sup>2</sup>
并获得以下信息:
word12.
如何将下标准确地放在上标之下?
【问题讨论】:
标签: html
这是一个干净的解决方案。创建两个 CSS 类:
.nobr {
white-space: nowrap;
}
.supsub {
display: inline-block;
margin: -9em 0;
vertical-align: -0.55em;
line-height: 1.35em;
font-size: 70%;
text-align: left;
}
您可能已经将“nobr”类作为
<span class="nobr">SO<span class="supsub">2-<br />4</span></span>
也就是说,将您的上标/下标包含在“supsub”类中,并在它们之间放置一个
。如果你喜欢你的上标/下标更大或更小,然后调整字体大小,然后修改垂直对齐和行高。边距设置中的 -9em 是为了防止上标/下标添加到包含它们的行的高度;任何大的价值都可以。
【讨论】:
您可以通过多种方式使用 CSS 做到这一点,并且每种方式都有其优点和缺点。一种方法是使用相对定位。一个简单的例子可能是这样的:
<span class="fraction">
<span class="numerator">3</span>
<span class="denominator">4</span>
</span>
以及与之配套的 CSS:
span.fraction { }
/* Or child selector (>) if you don't care about IE6 */
span.fraction span.numerator {
position:relative;
top:-0.5em;
}
span.fraction span.denominator {
position:relative;
top:0.5em;
left:-0.5em; /* This will vary with font... */
}
如果您使用等宽字体,这个特定示例会更好。
【讨论】:
使用 CSS 表格样式(IE8 及以下除外)。 HTML:
<span class="over-under">
<span class="over">sup</span>
<span class="under">sub</span>
</span>
CSS:
span.over-under {
position: relative;
top: 1em;
display: inline-block;
}
span.over-under > .over {
display: table-row;
}
span.over-under > .under {
display: table-row;
}
小提琴:https://jsfiddle.net/FredLoney/Loxxv769/4/
除了比相对位置调整更简单之外,此解决方案还避免了由这些替代方案引起的布局扭曲。参见,例如,https://jsfiddle.net/FredLoney/da89nyk2/1/。
【讨论】:
嗯,你不能用普通的 HTML 来做到这一点。就像已经提到的那样,使用 CSS。但是你也需要一些定位!
【讨论】: