Тег sub в HTML: нижний индекс для формул и обозначений

Тег sub опускает текст ниже строки и делает его мельче: так пишут индексы в формулах, например H2O, и номера переменных, например x1. Название - от английского subscript, «нижний индекс». Тег парный, закрывающий обязателен, из атрибутов работают только глобальные. Он входит в стандарт HTML и не устарел. Зеркальный тег sup поднимает текст выше строки: о степенях, единицах и сносках рассказано на его странице.

HTML
<p>Углекислый газ: CO<sub>2</sub>.</p>

Формулы: какие цифры уходят вниз

В химической формуле индекс показывает число атомов и относится к символу элемента слева: в H2O два атома водорода и один кислорода. Такой индекс - часть записи, без него формула читается иначе. Справочник MDN подчёркивает, что sub нужен по типографским причинам, а не ради оформления.

Есть цифра, которая индексом не является: число перед формулой. В записи 2H2O первая двойка означает две молекулы воды, и относится она ко всей формуле, а не к символу рядом.

Пример: отметьте индексы

Результат

Выберите формулу и нажимайте на цифры: нажатая цифра становится индексом. Под формулой показана разметка, которая у вас получилась, и вывод: не хватает индексов, есть лишний или всё верно.

Индекс относится к символу слева, а число перед формулой - ко всей формуле. Отсюда правило разметки: в sub оборачивают только цифры внутри формулы.

Переменные и логарифмы

Так же пишут номера переменных: x1 и x2 - два разных корня уравнения, а буква у них общая. Саму переменную отмечает тег var, а индекс находится внутри него.

HTML
<p>Корни уравнения: <var>x<sub>1</sub></var> и <var>x<sub>2</sub></var>.</p>
<p>log<sub>2</sub> 8 = 3</p>

В логарифме нижняя цифра - основание: log2 8 читается как «логарифм восьми по основанию два». Основание - часть записи, поэтому его нельзя оставлять на строке: log2 8 читается уже как «лог два, восемь».

Индекс и показатель рядом: ионы

В формуле иона нужны оба индекса сразу: сульфат-ион записывают как SO42-. Внизу стоит число атомов кислорода, вверху - заряд. Оба тега идут друг за другом, а не один под другим.

HTML
<p>Сульфат-ион: SO<sub>4</sub><sup>2-</sup></p>

Записи, где два индекса должны стоять точно друг над другом, например атомное и массовое число слева от символа, тегами не получить: MDN советует для них MathML. Про верхний индекс, степени и сноски - на странице sup.

Размер и сдвиг: что делает браузер

Без стилей браузер задаёт два свойства CSS: font-size: smaller, то есть «мельче, чем у родителя», и vertical-align: sub, то есть «ниже базовой линии». В Chrome текст уменьшается примерно в 1,2 раза: в абзаце размером 16 пикселей индекс получает 13,3 пикселя. Жирность, курсив и цвет тег не меняет, поэтому sub внутри strong остаётся жирным. У sup размер и вложенность работают так же, только текст поднимается.

CSS
sub {
  font-size: 0.75em;
  vertical-align: -0.25em;
}

Первая строка задаёт размер: три четверти от размера родителя. Вторая опускает индекс на четверть его собственного размера ниже базовой линии, то есть линии, на которой находятся буквы. Единица em в первой строке считается от размера родителя, во второй - от размера самого индекса.

Вложенные sub и sup мельчают и смещаются дальше, потому что каждый считает размер от родителя: 16 пикселей, потом 13,3, потом 11,1, потом 9,3 и 7,7. Так записывают индекс у индекса, но на третьем уровне текст уже трудно читать.

Почему строка с индексом выше остальных

Опущенный индекс остаётся частью строки, и браузер увеличивает её высоту, чтобы он поместился. Расстояние между строками абзаца становится неравномерным: строки с индексами выше соседних. То же происходит и у sup. Чтобы строка не росла, индексу задают нулевую высоту строки.

CSS
sub,
sup {
  line-height: 0;
}

Пример: строка с индексом до и после правила

Результат

Кнопка включает и выключает правило line-height: 0 для sub. Под текстом подписана высота каждой из трёх строк в пикселях и разница между строкой с индексом и остальными.

Как индекс читают программы и как копируют

У элемента sub есть собственная роль в структуре доступности: subscript, у sup - superscript. Об этом пишут MDN и Дока . Дока отмечает, что программы чтения с экрана эту роль пока не озвучивают. Мы озвучивание в NVDA, JAWS и VoiceOver не проверяли.

При копировании индекс становится обычной цифрой: из H2O получится «H2O». Для формул это терпимо, потому что запись остаётся узнаваемой. Для степеней всё хуже, об этом - на странице sup.

Частые ошибки

Большинство ошибок с этим тегом сводится к одной привычке: считать его кнопкой «опустить ниже».

ОшибкаЧто происходитКак исправить
Число перед формулой в sub: <sub>2</sub>H2OЧисло молекул превращается в индекс, и запись читается неверноОставить число на строке, а в sub взять только цифры внутри формулы
Индекс написан обычными цифрами: CO2Формула теряет типографский вид, а «2» читается как обычная цифраОбернуть индекс в sub
sub вместо sup у степени или зарядаПоказатель окажется ниже строки, и запись читается неверноДля верхнего индекса использовать sup
sub и sup друг под другом в одной точкеДва тега не встанут один над другим, получится ступенькаДля таких записей нужен MathML, так советует MDN
sub на слово или фразуСмысл «индекс» пропадает, читать опущенный текст тяжелоОставить sub для короткого индекса
Не убрано раздвигание строкСтроки с индексами выше соседних, интервал в абзаце скачетПравило line-height: 0 для sub и sup
Категория
Поделиться в социальных сетях

Отправить комментарий

0 Комментарии

Отправить комментарий (0)

#buttons=(Хорошо) #days=(20)

Мы используем файлы cookie для улучшения работы сайта. Подробнее
Хорошо
×