Ceci est une autre solution propre:
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 */
De cette façon, vous pouvez toujours utiliser des balises sup / sub mais vous avez corrigé leur comportement idiot pour toujours bousiller la hauteur de la ligne de paragraphe .
Alors maintenant, vous pouvez faire:
<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>
Et la hauteur de votre ligne de paragraphe ne doit pas être foirée.
Testé sur IE7, IE8, FF3.6, SAFARI4, CHROME5, OPERA9
J'ai testé en utilisant un p {line-height: 1.3;}
(c'est une bonne hauteur de ligne à moins que vous vouliez que vos lignes collent trop près) et cela fonctionne toujours, car "-0.6em" est une si petite quantité qu'avec cette hauteur de ligne le texte sous / sous s'adaptera et ne vous recoupez pas.
J'ai oublié un détail qui pourrait être pertinent J'utilise toujours DOCTYPE dans la 1ère ligne de ma page (en particulier j'utilise le HTML 4.01 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
). Donc, je ne sais pas si cette solution fonctionne bien lorsque le navigateur est en mode quirkmode (ou non standard) en raison du manque de DOCTYPE ou d'un DOCTYPE qui ne déclenche pas le mode Standard / Presque Standard.