Это еще одно чистое решение:
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 */
Таким образом, вы все еще можете использовать теги sup / sub , но вы исправили их нелепое поведение, чтобы всегда портить высоту строки абзаца .
Так что теперь вы можете сделать:
<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>
И высота строки вашего абзаца не должна быть испорчена.
Проверено на IE7, IE8, FF3.6, SAFARI4, CHROME5, OPERA9
Я тестировал, используя p {line-height: 1.3;}
(это хорошая высота строки, если вы не хотите, чтобы ваши линии придерживались слишком близко), и она все еще работает, потому что "-0.6em" такая маленькая величина, которая также с этой высотой строки под / под текст будет соответствовать и не переходить друг на друга.
Забыл подробности, которые могут иметь значение. Я всегда использую DOCTYPE в 1-й строке моей страницы (в частности, я использую HTML 4.01 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
). Поэтому я не знаю, хорошо ли работает это решение, когда браузер находится в режиме quirkmode (или не в стандартном режиме) из-за отсутствия DOCTYPE или DOCTYPE, который не вызывает стандартный / почти стандартный режим.