Верхние и нижние индексы, не портящие вид текста

Для нижних и верхних индексов в ХТМЛе есть элементы sub и sup. К сожалению, при использовании их в тексте равенство высот строк ломается, и образуются неприятные дыры:

Верхние и нижние индексы, портящие высоту строки

Но ведь мы знаем, что элементы выглядят в браузере так, как выглядят, лишь потому, что про них написано что-то во встроенной таблице стилей браузера (иногда, правда, воображаемой).

Элементы sub и sup для выравнивания используют свойство vertical-align со значениями sub или super. Именно они и влияют на высоту строки. Стало быть, нам нужно вместо них использовать какой-нибудь vertical-align, оставляющий строку прежней высоты, и сдвигать индексы иным способом, например, с помощью position: relative.

Я уже давно почти везде использую примерно вот такую конструкцию:

sup, sub {
  vertical-align: middle;
  position: relative;
  font-size: 75%;
}
sup { bottom: 0.5em; }
sub { top: 0.5em; }

В результате получается нормальный текст:

Верхние и нижние индексы, не портящие высоту строки
Подписаться на блог
Отправить
Запинить
Дальше
11 комментариев
Владимир Игонин 2007

Огромное спасибо, меня всегда бесили получаемые дыры, но занятся решением было всё некогда.

Val 2007

Хорошее решение и хороший текст выбран в качестве образца.

Илья Бирман 2007
Илья Новиков 2007

Спасибо, Илья. Я часто использую в тексте сноски, поэтому этот совет для особенно важен.

frst 2007

Волшебно.
Надеюсь оно везде работаетю

Виктор 2007

Илья, благодарю вас за эту заметку!

alshur 2007

!!Надеюсь оно везде работаетю!!

в ie 5.0 свойство bottom не поддерживается, если что

Shclr 2007

Разве position:relative не для блочных элементов работает?

Илья Бирман 2007

Для любых работает.

Более того, в спецификации даже написано:

!!Although relative positioning may be used as a form of superscripting and subscripting, the line height is not automatically adjusted to take the positioning into consideration.!!

Это я только что обнаружил в поисках ответа на ваш вопрос ;-)

Johnny Woo 2007

На случай, если хочется удостовериться, но негде — в Сафари тоже работает.

gray 2007

Ух ты, отличная «как бы мелочь». Возьму на вооружение :)

Никита Васильев 2007

Я раньше использовал для этого %%line-height:.1em%%, но ваш вариант, похоже, лучше работает в IE.

Карпинский Александр aka homm 2007

Спасибо, но всеже есть некторые проблемы.

  1. Стандартизации отображения это все равно не дает, в Эксплорере отличается чуток, хотя в Опере и ФаерФоксе становится одинакого.
  2. Эксплорер при значении font-size: 75%; попытался сгладить шрифт, и вместо циферок получилась размазня. Пришлось исправить на 85%.
Мои книги