Questa è un'altra soluzione pulita:
sub, sup {vertical-align: baseline; position: relative; font-size: 70%;} /* 70% size of its parent element font-size which is good. */
sub {bottom: -0.6em;} /* use em becasue they adapt to parent font-size */
sup {top: -0.6em;} /* use em becasue they adapt to parent font-size */
In questo modo puoi ancora usare i tag sup / sub ma hai corretto il loro comportamento odioso per rovinare sempre l'altezza della linea di paragrafo .
Quindi ora puoi fare:
<p>This is a line of text.</p>
<p>This is a line of text, <sub>with sub text.</sub></p>
<p>This is a line of text, <sup>with sup text.</sup></p>
<p>This is a line of text.</p>
E l'altezza della linea di paragrafo non deve essere rovinata.
Testato su IE7, IE8, FF3.6, SAFARI4, CHROME5, OPERA9
Ho provato usando a p {line-height: 1.3;}
(che è una buona altezza della linea a meno che tu non voglia che le tue linee rimangano troppo vicine) e funziona ancora, perché "-0.6em" è una quantità così piccola che anche con quell'altezza della linea il testo secondario / secondario si adatterà e non andare l'uno sopra l'altro.
Ho dimenticato un dettaglio che potrebbe essere rilevante Uso sempre DOCTYPE nella prima riga della mia pagina (in particolare utilizzo HTML 4.01 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
). Quindi non so se questa soluzione funziona bene quando il browser è in modalità quirkmode (o non in modalità standard) a causa della mancanza di DOCTYPE o di un DOCTYPE che non attiva la modalità Standard / Quasi standard.