Что делает тег span
<span> оборачивает кусок текста внутри строки, чтобы его можно было стилизовать или найти через JavaScript. Это строчный близнец <div>: у него нет смысла и вида по умолчанию, и он не начинает новую строку.
Предложение остается в одной строке. Меняются только обернутые слова.
div или span
По назначению они одинаковы (контейнер без смысла), а различаются тем, как располагаются на странице:
Div разбивает предложение на три строки и растягивается на всю страницу; span остается в предложении и плотно облегает свой текст.
<div> | <span> | |
|---|---|---|
| Отображение | Блочное | Строчное |
| Начинает новую строку | Да | Нет |
| Ширина | Вся доступная ширина | По содержимому |
width, height, вертикальные отступы | Применяются | Игнорируются |
| Может содержать | Что угодно, включая блоки | Только текст и строчные элементы |
| Типичное применение | Разделы, карточки, обертки для раскладки | Слово или фраза внутри текста |
Еще одно отличие: <div> нельзя вкладывать в <p>, и при такой попытке браузер досрочно закрывает абзац, а span можно ставить везде, где может стоять текст. Подробнее на странице про div.
Стили для span: что работает, а что нет
Цвет, шрифт, фон и горизонтальные внутренние отступы у span работают. Размер нет: строчный элемент игнорирует width, height, а также верхний и нижний внешние отступы. Переключите его в inline-block, чтобы задать размер и оставить его в строке:
Первый span шириной ровно со свои слова. Второй имеет размер ровно 120 на 40 пикселей и все равно стоит внутри предложения.
span и JavaScript
Span обычно служит местом для значения, которое подставляет скрипт, например счетчика или имени пользователя:
Меняется только число; остальное предложение не трогается.
Когда конкретный тег лучше span
У span нет смысла, поэтому программа чтения с экрана читает его как обычный текст. Если у слов есть роль, используйте тег для этой роли и стилизуйте его как угодно:
| Смысл | Используйте вместо span |
|---|---|
| Важный текст | <strong> |
| Смысловое ударение | <em> |
| Выделенный или отмеченный текст | <mark> |
| Код, имя файла | <code> |
| Клавиша клавиатуры | <kbd> |
| Дата или время | <time datetime="2026-09-24"> |
| Текст на другом языке | <span lang="fr"> (span плюс атрибут lang) |
Разница между <strong>, <b>, <em> и <i> объясняется на странице про жирный текст.
Частые ошибки
widthу обычного span. Он игнорируется. Используйтеdisplay: inline-block.- div или абзац внутри span. Некорректный HTML, который разрывает строку. Замените внешний span на div.
- Кликабельные span. Как и до div, до span с
onclickнельзя добраться с клавиатуры. Используйте<button>или ссылку. - Span для каждого стиля. Если стиль нужен целым абзацам или разделам, поставьте класс на сам
<p>или контейнер, а не оборачивайте его текст в span.
Часто задаваемые вопросы
Что такое span в HTML?
<span> это универсальный строчный контейнер. Он оборачивает часть строки текста, например одно слово, чтобы к ней могли обратиться CSS или JavaScript, и у него нет собственного вида или смысла.
Чем отличается div от span?
<div> это блок: он начинается с новой строки и занимает всю ширину. <span> строчный: он остается внутри строки текста и шириной ровно со свое содержимое. Используйте div для группировки блоков, span для выделения слов внутри текста.
Почему width не работает у span?
Строчные элементы игнорируют width, height и вертикальные внешние отступы. Задайте span display: inline-block, чтобы он остался в строке, но принимал размер, или display: block, чтобы он вел себя как div.
Как изменить цвет одного слова в HTML?
Оберните слово в span с классом и задайте цвет в CSS: <span class="accent">word</span> и .accent { color: #2563eb; }. Для разового случая подойдет и <span style="color: #2563eb">word</span>.
Может ли span содержать div?
Нет. Span может содержать только строчное содержимое: текст, ссылки, картинки и другие span. Браузер все равно покажет div внутри span, но это некорректный HTML, который разрывает строку, поэтому сделайте внешний элемент div.