При помощи SVG фильтра feGaussianBlur можно размыть какую-нибудь область на фотографии, ограничив ее блоком любой формы и с любым оформлением. На размытой области текст становится более читаемым. Этот прием хорошо работает, когда не желательно размывать весь фон целиком, а непосредственно под блок с текстом. Размыва...

Как размыть фон под блоком, используя SVG

При помощи SVG фильтра feGaussianBlur можно размыть какую-нибудь область на фотографии, ограничив ее блоком любой формы и с любым оформлением. На размытой области текст становится более читаемым. Этот прием хорошо работает, когда не желательно размывать весь фон целиком, а непосредственно под блок с текстом. Размывать будем CSS фильтром blur и SVG фильтром feGaussianBlur, для обеспечения кроссбраузерности.

Пример текста на не размытом фоне:

Как размыть фон под блоком, используя SVG.

Пример текста на размытой области:

Как размыть фон под блоком, используя SVG.

HTML разметка

Создадим текстовый блок, который впоследствии предстоит размыть и вставим SVG фильтр, указав степень размытости stdDeviation.

<div class="blur-block">
    <h1>Лимон</h1>
<span>Полезен в любой сезон года. Это гибрид цитруса и горького апельсина.</span>
</div>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
    <filter id="blur">
        <feGaussianBlur stdDeviation="6"></feGaussianBlur>
    </filter>
</svg>

CSS код

Вставим картинку в качестве фона, запретив ей повторяться и прокручиваться. Выровняем ее по центру и укажем размер cover. Обратите внимание, что фоновая картинка по наследству переходит в body и в область размытия через значение inherit. Это важно!

html {
    background: url("https://cdn.pixabay.com/photo/2020/07/24/21/58/lemon-5435158_960_720.jpg")
    no-repeat fixed center / cover;
    position: relative; /* относительное позиционирование */
    overflow-y: scroll; /* разрешить вертикальную прокрутку */
}

body{
    background: inherit; /* наследование фоновой картинки */
    display: flex;
    min-height: 100vh; /* минимальная высота */
}

Оформление размытой области

.blur-block{
    position: relative;
    display: flex; /* флексовый блок */
    flex-direction: column; /* текст по вертикали */
    justify-content: center;/* текст по центру */
    align-items: center;/* текст по центру */
    margin: auto; /* выравнивание блока по центру */
    width: 450px; /* ширина блока */
    height: 200px; /* высота блока */
    padding: 5px; /* поля для текста */
    box-shadow: 1px 1px 4px rgba(14, 14, 14, 0.3); /* тень */
    border: 15px solid rgba(255, 255, 255, 0.15); /* рамка у блока */
    border-radius: 5px; /* скругление углов рамки */
    text-shadow: 0 1px 2px #000; /* тень для текста */
    color: #fff; /* цвет текста */
    background: inherit; /* наследование фоновой картинки */
    cursor: move; /* вид курсора */
    font-family: Montserrat, sans-serif; /* название шрифта */
}

Оформление текста

h1 {
    font-size: 40px; /* размер заголовка */
    color: #FFFF8D; /* цвет заголовка */
    margin-bottom: 5px; /* нижний отступ */
}
span {
    font-size: 20px; /* размер описания */
    margin-top: 5px; /* верхний отступ */
    margin-bottom: 30px;/* нижний отступ */
}

Размываем область

.blur-block:before{
    content:""; /* пустой */
    position: absolute; /* абсолютное позиционирование */
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    background: inherit; /* наследование фоновой картинки */
    filter: blur(10px); /* фильтр размытия */
    filter: url(#blur); /* кроссбраузерное размытие */
}

Посмотрите пример на CodePen