To kolejne czyste rozwiązanie:
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 */
W ten sposób nadal możesz używać znaczników sup / sub , ale naprawiłeś ich idiotyczne zachowanie, aby zawsze przekręcać wysokość linii akapitu .
Teraz możesz zrobić:
<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>
A wysokość linii akapitu nie powinna się zepsuć.
Testowane na IE7, IE8, FF3.6, SAFARI4, CHROME5, OPERA9
Przetestowałem przy użyciu p {line-height: 1.3;}(to jest dobra wysokość linii, chyba że chcesz, aby twoje linie trzymały się zbyt blisko) i nadal działa, ponieważ „-0,6 em” jest tak małą ilością, że również przy tej wysokości linii zmieści się podtekst / pod tekst i nie przekraczajcie się.
Zapomniałem o szczegółach, które mogą być istotne. Zawsze używam DOCTYPE w pierwszym wierszu mojej strony (konkretnie używam HTML 4.01 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">). Nie wiem więc, czy to rozwiązanie działa dobrze, gdy przeglądarka działa w trybie quirkmode (lub w trybie innym niż standardowy) z powodu braku DOCTYPE lub DOCTYPE, który nie uruchamia trybu Standard / Prawie Standard.