CSS
box-shadow
генератор
{CSS} код для вставки:
Готовые тени:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
Активные слои:
Вопросы и ответы
Что такое CSS свойство box-shadow?
box-shadow — CSS свойство, которое добавляет одну или несколько теней за элементом, создавая иллюзию глубины на плоской странице. Тень применяется к большинству HTML-элементов, повторяет форму блока с учётом border-radius и не влияет на поток документа. Свойство задаётся одной строкой: горизонтальное смещение, вертикальное смещение, размытие, растяжение и цвет.
Как задать несколько теней одному элементу?
Перечислите тени через запятую в одном объявлении: box-shadow: 0 2px 8px rgba(0,0,0,0.15), 0 0 0 3px #4a90e2. Браузер рисует их в порядке объявления — первая тень в списке оказывается поверх остальных. Количество теней не ограничено, что позволяет строить сложные световые эффекты и многослойные обводки.
Как задать тень только с одной стороны элемента?
Используйте направленное смещение вместе с отрицательным значением spread. Например, тень только снизу: box-shadow: 0 8px 6px -6px rgba(0, 0, 0, 0.4). Отрицательный spread «втягивает» тень внутрь элемента, скрывая боковые и верхний края — снаружи остаётся только нижняя часть.
Влияет ли box-shadow на расположение соседних элементов на странице?
Нет. Тень — исключительно визуальный эффект: браузер рисует её поверх соседних элементов и не сдвигает их. Тень не добавляет размер к блоку и не учитывается при расчёте ширины, высоты и отступов. Если тень визуально перекрывает соседний контент, добавьте нужный отступ (margin или padding) вручную.
Почему transition к box-shadow: none не анимируется плавно?
Браузер не умеет интерполировать между конкретным значением тени и ключевым словом none — переход происходит мгновенно. Вместо none используйте «нулевую» тень: 0 0 0 0 transparent. Это валидное значение, между которым и любой тенью transition работает корректно: box-shadow: 0 0 0 0 transparent.
Можно ли использовать box-shadow как замену border, чтобы не сдвигать соседние элементы?
Да, это распространённый приём. При нулевом размытии и нулевом смещении четвёртый параметр (растяжение) создаёт визуально идентичную рамку: box-shadow: 0 0 0 2px #000. В отличие от border, тень не добавляет размер к блоку и не сдвигает соседние элементы. Особенно удобно для стилей :focus — обводка появляется и исчезает без прыжков вёрстки.
Что производительнее для анимации — box-shadow или filter: drop-shadow()?
box-shadow обычно быстрее: большинство браузеров обрабатывают его анимацию на видеокарте без повторного рисования страницы. filter: drop-shadow() анализирует реальные пиксели элемента, в том числе прозрачные области, что заметно дороже на больших блоках. Для максимальной плавности hover-эффектов тень лучше заранее задать на псевдоэлементе ::after и анимировать только его прозрачность (opacity), а не сам box-shadow.