На главную Наверх

07 марта 2013

Как сверстать Гауссово размытие

Комментарии

Понадобилось мне как-то сверстать такой эффект: картинка «светится» и подсвечивает фон под собой. Каждая картинка своими цветами. В графическом редакторе свечение — это дубликат картинки с применением размытия по Гауссу в несколько десятков пикселей.

Сначала была мысль сделать размытие, используя canvas. Но, как оказалось, проще сделать это без канваса и яваскрипта через SVG-фильтры. CSS-фильтры от Adobe ещё не слишком распространены: работают с префиксом только в webkit. У SVG-фильтров поддержка намного шире — все современные браузеры, кроме Safari 5.1 и Андроид браузера. А в IE уже начиная с версии 5.5 есть старые добрые фильтры (те самые, с длинным названием filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=70);), которые, тем не менее, прекрасно справляются с задачей.

Если всё-таки нужно именно через canvas, то вам сюда — StackBlur for Canvas.

Demo

Рассмотрим, как это работает.

Под картинкой спозиционируем SVG-файл:

<svg class="bg-blur">
    <defs>
        <filter id="blur" x="-200%" y="-200%" width="400%" height="400%">
            <feGaussianBlur in="SourceGraphic" stdDeviation="70" />
        </filter>
    </defs>

    <image x="150" y="150" id="svg-image" width="280" height="280" xlink:href="http://pcdn.500px.net/27549003/d409bce305cd0f77f3b12d124f69c7a3659bfaea/3.jpg" filter="url(#blur)"/>

</svg>

Размеры и позиция SVG задаются в CSS через класс bg-blur.

Внутри тегом image мы помещаем нашу картинку. Левый верхний угол имеет координаты x="150" y="150", чтобы дать место свечению.

Изображению назначен фильтр #blur, который определен ранее в секции defs.

© Павел Радьков 2013.

Поделиться
Твитнуть
Плюсануть
Поделиться
Телеграфировать
  • 04 июля 2017

Как правильно использовать переменные в препроцессорах Less и Sass

  • 13 февраля 2016

Как верстальщику получить код ревью

  • 02 мая 2014

Веб-лицензии для платных шрифтов могут стоить вам дорого

  • 01 мая 2014

Бесплатная замена платному Helvetica Neue

  • 25 апреля 2014

Деплой Docpad-сайта на GitHub Pages

  • 07 апреля 2014

Краткое руководство по Маркдауну

  • 10 февраля 2014

О каких дизайнерах мечтают верстальщики

  • 09 февраля 2014

Захват экрана в GIF

  • 06 февраля 2014

Font-weight: bolder для шрифтов со множеством начертаний

  • 04 февраля 2014

Параметры subject и body в mailto ссылках

  • 26 января 2014

Посещённая ссылка при наведении

  • 19 января 2014

CSS-селектор :not. Полезные примеры

  • 24 января 2013

Списки и картинки с флоатами

  • 09 декабря 2012

Pointer-events

  • 27 ноября 2012

Как отключить javascript в Google Chrome

  • 28 октября 2012

Перечёркивание крест-накрест

  • 08 апреля 2012

Отладка мобильных сайтов в Webkit. Инспектор кода на мобильных устройствах

  • 18 марта 2012

Горячие клавиши для выбора предыдущего и следующего слоя в Photoshop

  • 11 марта 2012

HTML-сущности и их UTF-коды

  • 22 февраля 2012

Нарезка в Photoshop — New Layer Based Slice

  • 12 февраля 2012

Как перекрасить поля с автозаполнением в Google Chrome