Тег s в HTML: зачёркнутое, которое уже неактуально

Тег s отмечает текст, который больше не актуален, но остаётся на странице: например, старую цену рядом с новой. Название - от английского strikethrough, «зачёркивание». Тег парный, закрывающий обязателен, собственных атрибутов нет, только глобальные. Он входит в стандарт HTML и не устарел, а по умолчанию браузер проводит через текст линию.

HTML
<p>Чайник Аква-2: <s>1200 ₽</s> 990 ₽.</p>

Что делает тег s в HTML

Тег s описывает текст, который был верным, но перестал быть актуальным: цена изменилась, места закончились, условие поменялось. Такой текст не удаляют, потому что он помогает читателю сравнить и понять, что изменилось. Справочник MDN называет два типичных случая: старая цена и «распродано».

Пример: три случая, где нужен s

Результат

Нажимайте на кнопки: в каждом случае устаревший текст зачёркнут, вокруг него показаны теги s, а под текстом написано, что именно отмечено и почему это не del.

Общее у всех случаев одно: текст остаётся на странице, а рядом указано то, что действует сейчас. Тег s ничего не удаляет и не сообщает, что документ редактировали.

Тег s, del или CSS: как выбрать

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

Текст устарел, но должен остаться на виду - нужен s. Текст удалили при правке документа, и читателю показывают, что убрано, - нужен del, а добавленное при той же правке отмечают ins. Линия нужна только для вида - берут класс и CSS.

HTML
<p>Чайник: <s>1200 ₽</s> 990 ₽.</p>
<p>Договор: <del>срок 10 дней</del> <ins>срок 14 дней</ins>.</p>
<h2 class="strike-title">Распродажа</h2>
ПризнакsdelКласс и CSS
Что сообщаетТекст больше не актуаленТекст удалён при правкеНичего, только вид
ПримерСтарая цена рядом с новойПункт, убранный из договораЭффект в заголовке
Вид по умолчаниюЛиния через текстЛиния через текстКак задано в CSS
Роль в структуре доступности (Chromium 141)Отдельной роли нетdeletionОтдельной роли нет

Вид у s и del одинаковый: мы проверили в Chromium 141, и у обоих, как и у устаревшего strike, линия проходит через середину текста цветом текста. Разница только в смысле, а на экране её не видно, поэтому важно выбирать тег осознанно.

Пример: подберите тег к ситуации

Результат

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

Как выглядит s и как изменить стиль

Линию рисует свойство text-decoration со значением line-through, то есть «линия через текст». Линию можно перекрасить и сделать толще, не меняя цвет самого текста.

CSS
s {
  color: #7A8090;
  text-decoration-color: #b3261e;
  text-decoration-thickness: 2px;
}

Первая строка делает сам текст серым, вторая красит линию в красный, третья задаёт толщину линии 2 пикселя. Мы проверили эти свойства в Chromium 141: и цвет, и толщина линии меняются отдельно от цвета текста. Если прописать text-decoration: none, линия исчезнет, а тег останется: читатель перестанет видеть, что текст неактуален.

Атрибуты тега s и правила записи

Собственных атрибутов у s нет, работают только глобальные: class, id, title, lang, style и остальные. Тег парный: закрывающий </s> обязателен. Внутри допустимы только текст и другие строчные теги, блочные вроде p или div вкладывать нельзя.

HTML
<p>Было <s class="old-price">1200 ₽</s>.</p>

<s><p>Так нельзя: абзац внутри s.</p></s>

Устарел ли тег s

Нет. В HTML 4 тег считался устаревшим, рядом с ним существовал похожий strike. В HTML5 тегу s дали смысл «текст больше не актуален», а strike остался устаревшим: вместо него берут s или del. Справочники MDN и Дока описывают тег так же.

Читают ли s программы чтения с экрана

В Chromium 141 у элемента s нет отдельной роли в структуре доступности, а у del она есть: deletion. MDN пишет, что программы чтения с экрана s по умолчанию не озвучивают. Мы это не проверяли ни в NVDA, ни в JAWS, ни в VoiceOver.

Линия не должна быть единственным носителем смысла: если читатель её не увидит, он получит устаревшую цену вместо действующей. Напишите то же словами: «Старая цена 1200 ₽, новая 990 ₽». Похожая ситуация с пометкой линией есть у тега u.

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

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

ОшибкаЧто происходитКак исправить
s вместо del при правке документаЧитатель не понимает, что это правка, и не видит, что добавленоИспользовать del и ins
Зачёркнуто, а действующего значения рядом нетЧитатель не знает, что теперь верноРядом указать новое значение
s на весь абзацЗачёркнутый абзац читать тяжело, а смысл «неактуально» размываетсяОтмечать короткий фрагмент
s ради красивого эффектаТег обещает «неактуально», а там просто оформлениеКласс и text-decoration
Устаревший strikeТег не входит в стандартИспользовать s или del
Категория
Поделиться в социальных сетях

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

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

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

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

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