Это еще одно чистое решение:
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, который не вызывает стандартный / почти стандартный режим.