2009-10-16 43 views

回答

0

那麼,你不能用普通的香草HTML做到這一點。就像上面提到的那樣,使用CSS。但是你會想要一些定位!

+0

我該怎麼做? – netimen 2009-10-17 10:28:11

3

有很多方法可以用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... */ 
} 

這個特殊的例子會更好地工作,如果你使用了等寬字體。

+1

但是這裏左邊的偏移取決於上標和下標的大小。但是如果提名者是31234而分母是56547呢?有沒有統一的決定,不取決於上標和下標的大小? – netimen 2009-10-17 10:25:36

+0

@netimen這是一個很好的觀點,我想到了上面的例子。總之:不,沒有魔法價值。這是CSS3 Ruby模塊可能派上用場的一個場合。 – 2009-10-17 15:50:37

+0

@netimen可以使用JavaScript計算正確的偏移量,然後將其應用於超/下標的每個實例。你試圖代表什麼?分數?化合物? – 2009-10-17 15:59:29

4

這是一個乾淨的解決方案。創建兩個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」 類作爲<NOBR>更換。現在,以表達對硫酸的分子式,使用「supsub」類,如下所示:

<span class="nobr">SO<span class="supsub">2-<br />4</span></span> 

也就是說,「supsub」類中附上標/下標,並把一個< BR/>他們之間。如果你喜歡你的上標/下標有點大或小,那麼調整字體大小,然後修改垂直對齊和行高。邊緣設置中的-9em用於保持上標/下標不加上包含它們的行的高度;任何大的價值都可以做到。

2

使用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/

相關問題