Генератор теней box-shadow для CSS

Далее

Создавайте по одному правилу box-shadow за раз: задайте горизонтальное и вертикальное смещение, размытие, разброс, цвет и опционально inset, затем скопируйте результат. Настоящие тени обычно требуют двух или трёх слоёв, поэтому создавайте каждый слой отдельно и соединяйте правила запятой.

Как создать тень box-shadow

  1. 1

    Задайте параметры тени

    Горизонтальное смещение, вертикальное смещение, радиус размытия, разброс и цвет с прозрачностью.

  2. 2

    Включите inset

    Переведите тень в режим inset, чтобы получить внутреннюю тень, это удобно для нажатых кнопок и эффектов углубления.

  3. 3

    Выберите цвет тени

    Чёрный с низкой непрозрачностью, классический вариант. Цветные тени (в тон элемента, но темнее) выглядят более естественно.

  4. 4

    Скопируйте CSS

    Скопируйте единственное правило тени и вставьте его в таблицу стилей. Для многослойной тени создавайте каждый слой отдельно и объединяйте правила запятой.

Синтаксис box-shadow

box-shadow: <x-offset> <y-offset> <blur> <spread> <colour> [inset];
  • x-offset: положительное значение, вправо, отрицательное, влево.
  • y-offset: положительное значение, вниз, отрицательное, вверх.
  • blur: 0, резкий край, чем больше значение, тем мягче. Видимый размер выходит за пределы элемента примерно на 1,5× значения размытия.
  • spread: дополнительный размер за пределами элемента. Положительное значение увеличивает тень, отрицательное, уменьшает её (полезно для тонких ореолов).
  • colour: поддерживает любой цвет CSS. rgba(0, 0, 0, 0.15), самый ходовой вариант.
  • inset: ключевое слово, разворачивающее тень внутрь элемента.

Многослойные тени выглядят реалистично

Этот генератор выдаёт по одному правилу тени за раз; чтобы построить многослойную тень, создавайте каждый слой отдельно и объединяйте правила запятой.

Одна тень с параметрами 0 0 40px выглядит размытой. Две тени, маленькая чёткая рядом с элементом и более крупная мягкая подальше, имитируют то, как рассеивается настоящий свет.

box-shadow:
  0 1px 2px rgba(0, 0, 0, 0.08),
  0 4px 12px rgba(0, 0, 0, 0.08);

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

Системы возвышения (elevation)

В Material Design используется шесть уровней возвышения, у каждого из которых свой набор теней. В упрощённом виде:

Возвышение Тень
1 (в покое) 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24)
2 0 3px 6px rgba(0,0,0,.16), 0 3px 6px rgba(0,0,0,.23)
3 0 10px 20px rgba(0,0,0,.19), 0 6px 6px rgba(0,0,0,.23)
4 (приподнято) 0 14px 28px rgba(0,0,0,.25), 0 10px 10px rgba(0,0,0,.22)
5 (парящее) 0 19px 38px rgba(0,0,0,.30), 0 15px 12px rgba(0,0,0,.22)

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

Цветные тени выглядят естественнее

Чисто чёрные тени смотрятся искусственно, потому что настоящие тени окрашиваются поверхностью под ними. Попробуйте:

box-shadow: 0 12px 24px rgba(40, 80, 120, 0.18);

Прохладный сине-серый цвет вместо чисто чёрного. На тёплых фонах используйте более тёплый оттенок.

Производительность

Тени box-shadow отрисовываются при каждой перерисовке. Крупные, тяжёлые тени на множестве элементов могут замедлять прокрутку. Способы смягчения:

  • Примените transform: translateZ(0) к элементу, чтобы принудительно создать композитный слой.
  • Заменяйте сложные тени на filter: drop-shadow() только если тень должна следовать за clip-path (в целом это медленнее).
  • Ограничивайте тени на элементах, которые часто перерисовываются.

inset для нажатых состояний

.button:active {
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.12);
}

Тени inset имитируют углубление, кнопка выглядит вдавленной в поверхность. Сочетайте их с небольшим смещением вниз transform: translateY(1px), чтобы получить ощутимый отклик при нажатии.

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

Обычно потому, что размытие слишком мало или разброс слишком велик. Тень с резким краем без размытия выглядит как дубликат элемента. Увеличьте размытие (20–30px, частая отправная точка) и держите разброс на уровне 0 или очень малых отрицательных значений.

box-shadow повторяет border-box элемента, включая border-radius, поэтому у скруглённых карточек тени автоматически получаются красиво скруглёнными. Для фигур, заданных через clip-path, box-shadow не повторяет обрезку; используйте вместо неё filter: drop-shadow().

Сильно сместите тень в нужном направлении и используйте отрицательный разброс, чтобы скрыть противоположную сторону. Либо используйте две тени, одну видимую на нужной стороне, а другую с отрицательным разбросом, чтобы «съесть» нежелательный выступ.

Жёсткого предела нет, но каждая тень, это ещё один проход отрисовки. Три-четыре слоя, практический потолок; при большем количестве стоит подумать о фоновом изображении или SVG.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Генератор цветовой палитры

Создавайте монохромные, аналоговые, комплементарные, триадные или тетрадные палитры из базового HEX-цвета и экспортируйте готовые CSS-переменные.

Генератор случайных букв

Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.