
Для создания тени вокруг элемента в CSS применяется свойство box-shadow. Оно позволяет задавать горизонтальное и вертикальное смещение, размытость, размер растяжения и цвет тени. Синтаксис выглядит так: box-shadow: offsetX offsetY blurRadius spreadRadius color;, где offsetX и offsetY задают смещение по осям, blurRadius – радиус размытия, spreadRadius – расширение, а color – цвет тени.
Для простого эффекта достаточно указать смещение и цвет, например: box-shadow: 4px 4px 10px rgba(0,0,0,0.3);. Использование rgba вместо обычного цвета позволяет управлять прозрачностью тени, что делает эффект более естественным. Если требуется тень снаружи и внутри блока одновременно, применяется комбинация inset и обычной тени.
При работе с многослойными тенями можно перечислять несколько значений через запятую. Например: box-shadow: 2px 2px 5px rgba(0,0,0,0.2), -2px -2px 5px rgba(0,0,0,0.2); создаст симметричный эффект. Важно учитывать производительность: слишком большие значения blurRadius и множественные тени могут замедлить рендеринг на слабых устройствах.
Как задать тень блока с помощью CSS
Для создания тени у блока используется свойство box-shadow. Оно принимает несколько значений, влияющих на смещение, размытие и цвет тени.
Синтаксис:
box-shadow: смещение_по_X смещение_по_Y размытие растяжение цвет;
- смещение_по_X – горизонтальное смещение тени. Положительное значение сдвигает вправо, отрицательное – влево.
- смещение_по_Y – вертикальное смещение. Положительное значение сдвигает вниз, отрицательное – вверх.
- размытие – радиус размытия тени. Чем больше значение, тем мягче края.
- растяжение – увеличивает или уменьшает размер тени. Отрицательное значение сжимает тень.
- цвет – задаёт цвет тени. Можно использовать HEX, RGB, RGBA или ключевые цвета.
Пример применения:
.box {
width: 200px;
height: 100px;
background-color: #f0f0f0;
box-shadow: 10px 10px 15px 0px rgba(0,0,0,0.4);
}
Для добавления нескольких теней используется запятая:
.box {
box-shadow: 5px 5px 10px rgba(0,0,0,0.3), -5px -5px 8px rgba(0,0,0,0.2);
}
Варианты теней:
- Внутренняя тень – добавляется с помощью ключевого слова
inset. - Внешняя тень – используется по умолчанию.
- Размытие без смещения – создаёт мягкое свечение вокруг блока.
Рекомендации:
- Использовать RGBA для прозрачных теней, чтобы они выглядели естественно.
- Комбинировать несколько теней для сложных эффектов.
- Не увеличивать сильно размытие, чтобы не терялась структура блока.
Применение свойства box-shadow к элементу

Свойство box-shadow позволяет создавать тени вокруг блока, управляя их смещением, размерами и цветом. Синтаксис включает четыре обязательных значения: смещение по горизонтали, смещение по вертикали, размытие и цвет. Пример: box-shadow: 5px 10px 15px rgba(0, 0, 0, 0.3); создаст тень смещением вправо на 5px и вниз на 10px с размытой областью радиусом 15px.
Для внутренней тени используется ключевое слово inset. Пример: box-shadow: inset 3px 3px 6px #888; формирует тень внутри границ элемента, создавая эффект углубления.
Можно задавать несколько теней через запятую. Каждая тень рассматривается независимо, что позволяет комбинировать мягкие и резкие эффекты. Пример: box-shadow: 2px 2px 5px rgba(0,0,0,0.4), -2px -2px 3px rgba(255,255,255,0.2);.
Для контроля визуальной глубины важно корректировать прозрачность и цвет тени. Использование RGBA позволяет плавно интегрировать тень с фоном, избегая резких контрастов. Например, rgba(0,0,0,0.25) добавляет легкую, естественную тень.
Размер размытия (blur-radius) определяет мягкость границ тени. Значение 0px создаёт четкую границу, большие значения (10–20px) создают рассеянную тень. Смещение по осям X и Y управляет направлением света.
Тени не влияют на размеры блока, но при необходимости их можно компенсировать через padding или margin, чтобы избежать обрезания визуального эффекта. Для элементов с прозрачным фоном рекомендуется использовать тени с небольшой непрозрачностью, чтобы сохранить читаемость содержимого.
Настройка смещения тени по горизонтали и вертикали
Смещение тени задается двумя первыми параметрами свойства box-shadow. Первый параметр определяет горизонтальное смещение: положительное значение сдвигает тень вправо, отрицательное – влево. Второй параметр отвечает за вертикальное смещение: положительное значение опускает тень вниз, отрицательное – поднимает вверх.
Например, box-shadow: 10px 5px 15px rgba(0,0,0,0.3); создаёт тень с горизонтальным сдвигом 10px и вертикальным 5px. Если необходимо расположить тень строго под блоком, задайте горизонтальное смещение 0: box-shadow: 0 8px 12px rgba(0,0,0,0.25);.
Для точного позиционирования тени используйте дробные значения: 2.5px 4.7px позволит добиться плавного эффекта, особенно на тонких границах. Смещение может быть отрицательным для имитации освещения с необычного угла, например: -6px -6px 10px rgba(0,0,0,0.2);.
Рекомендуется согласовывать смещение с размерами блока: большая тень при маленьком блоке выглядит непропорционально. В практике чаще используют горизонтальное смещение до 15% от ширины блока и вертикальное до 10% от высоты, чтобы сохранить естественность.
Если требуется равномерная тень вокруг блока, установите одинаковые значения горизонтального и вертикального смещения либо используйте 0 0 для центральной тени: box-shadow: 0 0 20px rgba(0,0,0,0.3);.
Регулировка размытия и распространения тени

Свойство box-shadow позволяет задавать два параметра, влияющих на вид тени: размытие (blur-radius) и распространение (spread-radius).
- Размытие (blur-radius) определяет, насколько мягкой будет граница тени. Значение 0px создаёт резкую тень, а увеличение до 10–20px делает её более плавной. Пример:
box-shadow: 5px 5px 15px rgba(0,0,0,0.5);– смещённая тень с сильным размытием. - Распространение (spread-radius) контролирует размер тени относительно блока. Положительное значение увеличивает тень, отрицательное уменьшает. Например:
box-shadow: 0 0 10px 5px rgba(0,0,0,0.3);– тень шире блока,0 0 10px -3px rgba(0,0,0,0.3);– сужает тень.
Для точного контроля можно использовать оба параметра одновременно:
- Задайте небольшое смещение (offset-x, offset-y) для естественного эффекта.
- Установите blur-radius от 5 до 15px для мягкой тени без «размывания» края блока.
- Подберите spread-radius от -3 до 5px, чтобы тень не выглядела слишком широкой или узкой.
Важно учитывать цвет и прозрачность тени, так как сильное размытие при высоком opacity делает тень слишком тяжёлой для восприятия. Для лёгкого эффекта используйте rgba с альфа-каналом 0.2–0.5.
Пример оптимальной комбинации для карточки: box-shadow: 0 4px 12px 2px rgba(0,0,0,0.25);
Использование цвета и прозрачности для тени

Свойство box-shadow позволяет задавать цвет и прозрачность тени через rgba() или hsla(). Использование прозрачности снижает жёсткость тени и делает её более естественной.
Рекомендуется выбирать цвет тени на 20–40% темнее основного фона блока. Для полупрозрачной тени обычно используют альфа-канал в диапазоне 0.2–0.5. Пример: box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);.
При работе с цветными фонами тень можно тонко корректировать, чтобы она гармонировала с фоном. Например, для светло-голубого блока лучше использовать синий с прозрачностью 0.25–0.35.
Таблица демонстрирует примеры сочетаний цвета фона и цвета тени:
| Цвет фона | Цвет тени | Прозрачность (α) | Пример CSS |
|---|---|---|---|
| #ffffff | #000000 | 0.3 | box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); |
| #f0f8ff | #0000ff | 0.25 | box-shadow: 0 6px 15px rgba(0, 0, 255, 0.25); |
| #faf0e6 | #a0522d | 0.35 | box-shadow: 0 5px 10px rgba(160, 82, 45, 0.35); |
| #d3ffd3 | #006400 | 0.3 | box-shadow: 0 3px 8px rgba(0, 100, 0, 0.3); |
Для мягких теней лучше использовать комбинацию смещения и размытия: небольшое смещение (2–4px) и большее размытие (8–15px) с низкой прозрачностью создают эффект естественного освещения.
Цвет тени можно изменять динамически с помощью CSS-переменных, чтобы поддерживать адаптивные темы сайта. Например:
--shadow-color: rgba(0, 0, 0, 0.3); box-shadow: 0 6px 12px var(--shadow-color);.
Создание нескольких теней для одного блока
Для добавления нескольких теней используется свойство box-shadow с перечислением значений через запятую. Каждое значение задаёт отдельную тень с параметрами: смещение по оси X, смещение по оси Y, размытие, распространение и цвет. Например:
box-shadow: 2px 2px 5px rgba(0,0,0,0.3), -3px 3px 10px rgba(255,0,0,0.5);
Первая тень смещена вправо и вниз на 2 пикселя, имеет размытие 5px и полупрозрачный чёрный цвет. Вторая тень смещена влево на 3px и вниз на 3px, размытие 10px, красная с прозрачностью 0.5. Порядок теней важен: верхняя тень в списке рисуется ближе к пользователю, последующие – под ней.
Для создания эффекта объёма или свечения удобно комбинировать внутренние (inset) и внешние тени. Пример: box-shadow: inset 0 0 8px rgba(0,0,0,0.4), 0 4px 12px rgba(0,0,0,0.2); Внутренняя тень создаёт эффект углубления, внешняя – лёгкую тень блока на фоне.
Рекомендуется использовать разные цвета и степени прозрачности, чтобы тени не сливались и создавали читаемую глубину. Для сложных интерфейсов можно задавать более двух теней, например: box-shadow: 0 2px 4px rgba(0,0,0,0.2), 0 6px 8px rgba(0,0,0,0.15), 0 10px 20px rgba(0,0,0,0.1); Этот приём часто используется для кнопок и карточек, имитируя многослойную проекцию.
Точный контроль над смещением и размытиями позволяет имитировать естественное освещение и визуально отделять блоки друг от друга. Для тестирования стоит менять параметры по одному, чтобы понять влияние каждой тени на итоговый вид.
Тень для внутренних элементов с inset

CSS-свойство box-shadow позволяет создавать внутренние тени с помощью ключевого слова inset. Такая тень располагается внутри границ блока, создавая эффект углубления или встроенного элемента.
Синтаксис: box-shadow: inset смещение по X смещение по Y размытие растяжение цвет;. Смещения задаются в пикселях или процентах, размытие регулирует мягкость границы тени, растяжение влияет на размер тени относительно элемента.
Пример: box-shadow: inset 2px 2px 5px rgba(0,0,0,0.5); создаёт лёгкое внутреннее затемнение в правом нижнем углу блока. Увеличение значений размытия до 10–15px делает тень более мягкой и равномерной.
Для многослойных внутренних теней используют запятую: box-shadow: inset 2px 2px 5px rgba(0,0,0,0.3), inset -2px -2px 3px rgba(255,255,255,0.2);. Первый слой добавляет тёмное углубление, второй – имитацию подсветки с противоположной стороны.
Внутренние тени хорошо подходят для кнопок и панелей, где требуется ощущение глубины без внешнего выделения. Рекомендуется использовать прозрачные цвета с rgba или hsla, чтобы сохранить гибкость под разные фоны.
При использовании inset важно следить за размерами блока: большие смещения с маленьким элементом могут сделать тень слишком агрессивной или обрезанной.
Особенности тени для круглых и овальных блоков
Используйте свойство box-shadow с точной настройкой смещения и размытия. Малое смещение (2-4px) при небольшом радиусе создаёт естественный объём. Для крупных блоков увеличение blur-radius до 10-20px смягчает границы и предотвращает «жёсткий» вид.
Овальные блоки лучше отображают тень с разными значениями горизонтального и вертикального смещения. Например, box-shadow: 4px 8px 12px rgba(0,0,0,0.3) создаёт более реалистичный эффект, чем одинаковые смещения по обеим осям.
Цвет тени стоит подбирать с учётом фона: для светлых блоков оптимальны полупрозрачные тёмные оттенки (rgba(0,0,0,0.25-0.35)), для тёмных – светлые (rgba(255,255,255,0.15-0.25)).
Для более глубокого объёма применяют множественные тени, задавая их через запятую. Первый слой с меньшим смещением и размитием имитирует близкое освещение, второй – более растянутый, имитирует рассеянный свет.
Особенность круглых блоков – тень всегда равномерно окружает форму. При изменении border-radius на менее круглую форму тень становится угловатой, поэтому при анимации формы лучше динамически менять параметры тени, чтобы сохранялся визуальный баланс.
Совместимость тени с разными браузерами
Свойство box-shadow поддерживается всеми современными версиями основных браузеров: Chrome начиная с версии 10, Firefox с 4, Safari с 5.1, Edge с 12 и Opera с 10.5. Для Internet Explorer эффект доступен с версии 9, однако IE не поддерживает множественные тени на одном элементе через одно свойство.
Для корректного отображения тени на старых мобильных браузерах рекомендуется использовать префиксы: -webkit-box-shadow для Safari и старых версий Android Browser, -moz-box-shadow для Firefox до версии 4. Современные версии браузеров префиксы игнорируют.
Тени на элементах с прозрачностью и градиентами могут вести себя по-разному: в Edge до версии 18 возможны артефакты при применении rgba. В Safari старых версий прозрачная тень может визуально сливаться с фоном.
Для сложных теней с множеством слоев следует тестировать отображение в разных браузерах, так как IE и некоторые мобильные браузеры могут сокращать список теней до двух или трех. В критичных случаях стоит дублировать ключевые тени отдельными элементами для стабильности внешнего вида.
Псевдоэлементы ::before и ::after корректно принимают тень во всех современных браузерах, что позволяет создавать декоративные эффекты без нарушения совместимости.
Свойство filter: drop-shadow() имеет частично ограниченную поддержку: старые версии Firefox и IE его не обрабатывают, а Chrome поддерживает с версии 18. Для кросс-браузерной совместимости рекомендуется комбинировать box-shadow и drop-shadow() только для визуальных улучшений, не критичных для функционала.
Вопрос-ответ:
Как задать простую тень для блока с помощью CSS?
Для этого используется свойство box-shadow. Его базовый синтаксис выглядит так: box-shadow: смещениеX смещениеY размытие цвет;. Например, box-shadow: 5px 5px 10px gray; создаст серую тень, смещённую на 5 пикселей вправо и вниз, с размытием 10 пикселей.
Можно ли сделать тень, которая будет внутри блока?
Да, для этого применяется параметр inset внутри box-shadow. Например, box-shadow: inset 0 0 10px rgba(0,0,0,0.5); создаст внутреннюю полупрозрачную тень, которая визуально «вдавит» содержимое блока внутрь. Это полезно для кнопок или панелей с эффектом глубины.
Как сделать несколько теней одновременно на одном элементе?
CSS позволяет добавлять несколько теней через запятую. Каждая тень описывается отдельно, как обычная. Например: box-shadow: 2px 2px 5px gray, -2px -2px 5px lightgray;. В этом примере блок будет иметь две тени: одну с правого нижнего угла и вторую с левого верхнего.
Как контролировать прозрачность и цвет тени?
Цвет и прозрачность задаются через обычные цветовые значения CSS. Для прозрачной тени удобно использовать rgba или hsla. Например, box-shadow: 0 4px 8px rgba(0,0,0,0.3); создаст тень черного цвета с 30% прозрачности. Так можно делать тень более мягкой и естественной, регулируя четкость и интенсивность визуального эффекта.
