Открыть сервис

SPAN

SPAN (от англ. span — промежуток, диапазон) — строчный (inline) элемент языка разметки HTML, предназначенный для выделения части текста или другого строчного содержимого с целью применения к нему стилей, атрибутов или скриптов без изменения структуры документа. В отличие от блочных элементов (например, <div>), <span> не создаёт переноса строки до и после себя и занимает только пространство, необходимое для его содержимого. Является одним из базовых элементов веб-вёрстки наряду с <div> и используется практически во всех современных веб-страницах.

История и стандартизация

Элемент <span> был впервые введён в спецификации HTML 3.2 (1997 год) как универсальный строчный контейнер. До его появления для стилизации отдельных фрагментов текста приходилось использовать элементы с семантической нагрузкой (например, <b>, <i>, <u>), что нарушало принцип разделения содержания и представления. <span> стал решением для ситуаций, когда требовалось применить стили или атрибуты к части текста, не имеющей собственного семантического значения.

В последующих версиях HTML (4.01, XHTML, HTML5) элемент <span> остался без изменений. В спецификации HTML5 он определён как «строчный контейнер без собственного значения» (non-semantic inline container). Его поведение полностью определяется атрибутами и CSS-правилами, применяемыми к нему.

Синтаксис и атрибуты

Элемент <span> является парным: открывающий тег <span> и закрывающий </span>. Между ними может располагаться любой строчный контент: текст, другие строчные элементы (например, <a>, <img>, <strong>), а также вложенные <span>.

Основные атрибуты

  • class — задаёт один или несколько классов CSS для стилизации или идентификации группы элементов.
  • idуникальный идентификатор элемента, используемый для адресации в CSS или JavaScript.
  • style — встроенные CSS-свойства, применяемые непосредственно к элементу.
  • title — всплывающая подсказка при наведении курсора.
  • lang — указывает язык содержимого элемента.
  • dir — направление текста (ltr — слева направо, rtl — справа налево).
  • **data-*** — пользовательские атрибуты для хранения произвольных данных (например, data-price="100").
  • hidden — скрывает элемент из отображения.
  • tabindex — определяет порядок фокусировки при навигации с клавиатуры.
  • role — задаёт семантическую роль элемента для вспомогательных технологий (например, role="button").

Все атрибуты, перечисленные в спецификации HTML для строчных элементов, применимы к <span>.

Отличия от <div>

Основное различие между <span> и <div> заключается в типе отображения по умолчанию:

Характеристика<span><div>
Тип отображенияСтрочный (inline)Блочный (block)
Перенос строкиНе создаётСоздаёт до и после
ШиринаПо содержимомуНа всю доступную ширину родителя
Допустимые вложенные элементыТолько строчныеЛюбые
Семантическая нагрузкаОтсутствуетОтсутствует

Оба элемента являются нейтральными контейнерами, не имеющими собственного семантического значения. Выбор между ними определяется исключительно типом содержимого и требуемым поведением в потоке документа.

Применение

1. Стилизация фрагментов текста

Наиболее распространённое использование <span>выделение части текста для применения CSS-стилей:

``html <p>В этом предложении <span style="color: red;">красное слово</span> выделено цветом.</p> ``

2. Работа с JavaScript

Элемент <span> часто используется как цель для манипуляций через DOM:

``javascript const element = document.getElementById('counter'); element.textContent = newValue; ``

3. Иконки и символы

Многие библиотеки иконок (например, Font Awesome, Material Icons) используют <span> для отображения иконок:

``html <span class="material-icons">home</span> ``

4. Адаптивная вёрстка

С помощью <span> можно скрывать или показывать части текста на разных разрешениях экрана:

``html <p>Заголовок <span class="mobile-hidden">(дополнительная информация)</span></p> ``

5. Хранение данных

Атрибуты data-* позволяют хранить произвольные данные, доступные через JavaScript:

``html <span data-user-id="12345" data-role="admin">Иван Иванов</span> ``

6. Доступность (accessibility)

Хотя <span> сам по себе не имеет семантического значения, с помощью атрибута role ему можно придать роль для скринридеров:

``html <span role="status" aria-live="polite">Сообщение отправлено</span> ``

Стилизация через CSS

По умолчанию <span> не имеет никаких стилей. Все визуальные свойства задаются через CSS. Наиболее часто используемые свойства:

  • color — цвет текста.
  • background-color — цвет фона.
  • font-size, font-weight, font-family — параметры шрифта.
  • padding, margin — отступы (работают только по горизонтали для строчных элементов; для вертикальных отступов требуется изменение типа отображения на inline-block или block).
  • border — рамка.
  • text-decoration — подчёркивание, зачёркивание.
  • cursor — вид курсора при наведении.
  • display: inline-block — позволяет задавать ширину и высоту, сохраняя строчное поведение.

Ограничения

  • Внутри <span> нельзя размещать блочные элементы (например, <div>, <p>, <h1>), так как это нарушает спецификацию HTML.
  • Вертикальные padding и margin не влияют на высоту строки, если не изменить тип отображения на inline-block.
  • Элемент не имеет семантического значения, что может снижать доступность контента для пользователей скринридеров при неправильном использовании.
  • Избыточное использование <span> без осмысленной структуры усложняет поддержку кода.

Альтернативы

В зависимости от задачи вместо <span> могут использоваться:

  • <em> — для смыслового выделения (курсив).
  • <strong> — для важного выделения (жирный).
  • <mark> — для выделения текста, относящегося к текущему контексту.
  • <code> — для фрагментов программного кода.
  • <abbr> — для аббревиатур.
  • <time> — для дат и времени.
  • <b> и <i> — для стилистического выделения без семантической нагрузки (устаревают, но всё ещё используются).

Выбор семантического элемента вместо <span> улучшает доступность и читаемость кода.

Интересные факты

  • Элемент <span> является одним из самых часто используемых HTML-элементов в интернете. По данным различных анализаторов, он встречается на более чем 90% всех веб-страниц.
  • В ранних версиях HTML (до 3.2) для аналогичных целей использовался элемент <U> (подчёркивание), который затем был переопределён как семантический.
  • В CSS существует псевдоэлемент ::before и ::after, которые часто применяются именно к <span> для добавления декоративных элементов (например, иконок или кавычек).
  • Элемент <span> может быть вложен сам в себя неограниченное количество раз, что позволяет создавать сложные цепочки стилей (например, для анимации букв).

Источники

  • Спецификация HTML Living Standard (WHATWG) — раздел «The span element».
  • Спецификация HTML 5.2 (W3C Recommendation) — раздел «4.5.26 The span element».
  • MDN Web Docs (Mozilla Developer Network) — «<span>: The Content Span element».
  • «HTML and CSS: Design and Build Websites» by Jon Duckett (2011).
  • «Learning Web Design» by Jennifer Niederst Robbins (5th edition, 2018).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →