Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как размыть фон под элементом

Короткий ответ

backdrop-filter размывает то, что находится под элементом. Фон элемента должен быть полупрозрачным:

<div style="display: grid; place-items: center; height: 180px; background: url(/media/photo-400x250.jpg) center / cover;">
  <div style="padding: 16px 24px; border-radius: 12px; background: rgb(255 255 255 / 30%); backdrop-filter: blur(8px); border: 1px solid rgb(255 255 255 / 50%);">Frosted glass</div>
</div>

Шапка над прокручиваемым содержимым

Популярный приём — липкая шапка, сквозь которую размыто видно страницу:

header {
  position: sticky; top: 0;
  background: rgb(255 255 255 / 70%);
  backdrop-filter: blur(10px) saturate(150%);
}

Размыть сам элемент

filter: blur() размывает сам элемент со всем содержимым — например, картинку за модальным окном или спойлер:

<style>
  .spoiler { filter: blur(5px); transition: filter 0.3s; cursor: pointer; }
  .spoiler:hover { filter: none; }
</style>
 
<p>The killer is <span class="spoiler">the butler</span>.</p>

Частая ошибка

backdrop-filter на элементе со сплошным фоном не даёт видимого эффекта: размытое содержимое закрыто непрозрачным цветом. Сделайте фон полупрозрачным через rgb(... / 30%). А сильное размытие на больших площадях нагружает слабые устройства — не размывайте весь экран без нужды.

Функции из этого ответа

  • backdrop-filter — Применяет фильтры ко всему, что находится за элементом, — эффект матового стекла.
  • filter — Графические эффекты элемента: размытие, чёрно-белый режим, яркость, тень по форме.
  • rgb() — Цвет из красной, зелёной и синей составляющих, по желанию с прозрачностью.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.