Menu

Тень текста в CSS: text-shadow, свечение, обводка

text-shadow рисует одну или несколько теней за текстом. Разберем четыре значения (смещение по x, смещение по y, размытие, цвет), как складывать тени для свечения, обводки и объемного текста и как тень помогает читать текст на пестром фоне.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

Как работает text-shadow

text-shadow рисует за текстом его копию, смещенную и размытую. Вы задаете горизонтальное смещение, вертикальное смещение, необязательное размытие и цвет.

3px 3px 0 #f59e0b означает 3px вправо (физически, при любом направлении письма), 3px вниз, без размытия, янтарный. Вторая тень размыта на 6px и использует полупрозрачный черный, это обычный рецепт для легкого эффекта глубины.

Синтаксис

text-shadow: <offset-x> <offset-y> <blur-radius>? <color>?;
ЗначениеОбязательноСмысл
offset-xДаПоложительное сдвигает тень вправо, отрицательное влево
offset-yДаПоложительное сдвигает вниз, отрицательное вверх
blur-radiusНет (по умолчанию 0)Насколько мягкий край; отрицательные значения невалидны
colorНет (по умолчанию цвет текста)Может стоять первым или последним

text-shadow: none убирает унаследованную тень. Меняйте значения ниже, чтобы увидеть действие каждого:

Попробуйте -4px -4px 0 #16a34a, 0 0 10px red и две тени через запятую.

Несколько теней: свечение, обводка и объем

Запятые складывают тени; первая рисуется сверху. Из одного этого правила получаются три эффекта:

  • Свечение: нулевые смещения, растущее размытие, темный фон.
  • Обводка: четыре четкие тени, по одной на каждую диагональ. Подходит для тонкой обводки; для более толстой ровной обводки -webkit-text-stroke: 2px #111827 (поддерживается во всех актуальных браузерах, несмотря на префикс) рисует контур по краям букв.
  • Объем: серия четких теней, каждая на 1px дальше, и буквы выглядят выдавленными.

Читаемый текст на пестром фоне

Белый текст на фотографии или узоре теряет края там, где фон светлый. Мягкая темная тень возвращает их без видимой подложки:

Тень помогает, но не гарантирует контрастность. Для длинного текста поверх изображения добавьте за текстом еще и сплошную или градиентную подложку.

text-shadow и box-shadow

text-shadowbox-shadow
ПовторяетФормы буквБлок элемента (и его скругление)
Значение spreadНетДа
insetНетДа
Несколько через запятуюДаДа

Тени для карточек и кнопок разобраны на странице тень box-shadow.

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

  • Тяжелые темные тени на основном тексте. Они размывают формы букв. Оставьте тени для заголовков и коротких подписей.
  • Забытое второе смещение. text-shadow: 2px #000 невалидно; оба смещения обязательны.
  • Отрицательное размытие. Оно невалидно, и все объявление отбрасывается.
  • Ожидание, что тень займет место. Она только рисуется; большие тени могут перекрыть следующую строку или обрезаться через overflow: hidden.
  • Свечение на светлом фоне. Светлое свечение на белом не видно. Свечению нужен темный фон.

Часто задаваемые вопросы

Какой синтаксис у text-shadow?

text-shadow: offset-x offset-y blur-radius color;, например text-shadow: 2px 2px 4px rgb(0 0 0 / 40%);. Оба смещения обязательны; размытие по умолчанию 0, а цвет по умолчанию цвет текста.

Как добавить несколько теней к тексту?

Разделите тени запятыми: text-shadow: 0 0 4px #fff, 0 0 12px #2563eb;. Первая тень рисуется поверх следующих.

Как сделать эффект свечения текста?

Используйте тени без смещения и с размытием, часто несколько с растущим размытием: text-shadow: 0 0 4px #60a5fa, 0 0 12px #2563eb;. На темном фоне это выглядит как неоновое свечение.

Есть ли у text-shadow значение spread, как у box-shadow?

Нет. У text-shadow нет spread и нет ключевого слова inset. Чтобы сделать тень вокруг букв толще, сложите несколько теней или используйте -webkit-text-stroke для обводки.

Влияет ли text-shadow на раскладку?

Нет. Тень только рисуется: она не занимает места и не сдвигает соседнее содержимое, поэтому большая тень может перекрывать элементы рядом.

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ