Це ще одне чисте рішення:
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,6ем" - це така невелика кількість, що також з цією висотою рядка підходить під / підтекст. і не переходьте один одного.
Забув деталь, яка може бути актуальною, я завжди використовую 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, який не запускає стандартний / майже стандартний режим.