У меня не получается применить эффект размытия к полупрозрачному оверлею div. Я бы хотел, чтобы все, что находится за div, было размыто, например:
Вот jsfiddle, который не работает: http://jsfiddle.net/u2y2091z/
Есть идеи, как это сделать? Я хотел бы, чтобы это было как можно проще и кроссбраузерно. Вот CSS, который я использую:
#overlay {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
background:black;
background:rgba(0,0,0,0.8);
filter:blur(4px);
-o-filter:blur(4px);
-ms-filter:blur(4px);
-moz-filter:blur(4px);
-webkit-filter:blur(4px);
}
html
css
blur
css-filters
Чад Джонсон
источник
источник
CSS filter
не поддерживается в Firefox, вам не следует его использовать.Ответы:
Для более простого и актуального ответа:
Обратите внимание, что поддержка браузера не идеальна, но в большинстве случаев размытие не является существенным.
источник
Вот пример, в котором используется
svg
фильтр.Идея состоит в том, чтобы использовать
svg
элемент сheight
таким же, как у,#overlay
и применить к немуfeGaussianblur
фильтр. Этот фильтр применяется кsvg
image
элементу. Чтобы придать эффект вытянутости, вы можете использоватьbox-shadow
в нижней части наложения.Браузерная поддержка
svg
фильтров .Demo on Codepen
источник
Мне удалось собрать воедино информацию от всех здесь и далее в Google, и я пришел к следующему, который работает в Chrome и Firefox: http://jsfiddle.net/xtbmpcsu/ . Я все еще работаю над этой работой для IE и Opera.
Ключ ввода содержимого внутри в DIV , к которому применяется фильтр:
А затем CSS:
Итак, к маске применены фильтры. Также обратите внимание на использование url () для фильтра с
<svg>
тегом для значения - эта идея пришла из http://codepen.io/AmeliaBR/pen/xGuBr . Если вам случится минимизировать свой CSS, вам может потребоваться заменить любые пробелы в разметке фильтра SVG на «% 20».Итак, теперь все внутри маски div размыто.
источник
filter: url(...
. Удалите это, и Chrome успешно используетfilter: blur(10px);
.Если вы ищете надежный кроссбраузерный подход сегодня , вы не найдете лучшего. Лучший вариант - создать два изображения (в некоторых средах это можно автоматизировать) и расположить их так, чтобы одно перекрывало другое. Ниже я создал простой пример:
Несмотря на эффективность, даже этот подход не обязательно идеален. При этом он дает желаемый результат .
источник
Вот возможное решение.
HTML
CSS
Я знаю, что CSS можно упростить, и вам, вероятно, следует избавиться от идентификаторов. Идея здесь состоит в том, чтобы использовать div в качестве контейнера для обрезки, а затем применить размытие к дубликату изображения. Скрипка
Чтобы это работало в Firefox, вам придется использовать взлом SVG .
источник
-webkit-
тех случаев, когда он не реализован в этих браузерах. Стандартное объявление лучше поставить в конце - после всех версий с префиксом.Вместо добавления еще одного размытого фона к вашему контенту вы можете использовать фильтр фона . К вашему сведению, IE 11 и Firefox могут не поддерживать его. Проверить caniuse .
Демо:
источник
источник
Я придумал это решение.
Нажмите, чтобы просмотреть изображение размытого эффекта
Это своего рода трюк, который использует абсолютно позиционированный дочерний элемент
div
, устанавливает его фоновое изображение таким же, какdiv
и у родительского элемента, а затем используетbackground-attachment:fixed
свойство CSS вместе с такими жеbackground
свойствами, установленными для родительского элемента.Затем вы применяете
filter:blur(10px)
(или любое значение) к дочернему div.посмотреть код
источник
Вот решение, которое работает с фиксированным фоном, если у вас есть фиксированный фон и у вас есть некоторые наложенные элементы, и вам нужен размытый фон для них, это решение работает:
Изображение у нас есть этот простой HTML:
Фиксированный фон для
<body>
элемента-оболочки:А вот, например, у нас есть наложенный элемент с белым прозрачным фоном:
Теперь нам нужно использовать точно такое же фоновое изображение нашей оболочки для наших элементов наложения, я использую его как
:before
псевдо-класс:Поскольку фиксированный фон работает одинаково как для элементов оболочки, так и для наложенных элементов, у нас есть фон в той же позиции прокрутки, что и наложенный элемент, и мы можем просто размыть его. Вот рабочая скрипка, протестированная в Firefox, Chrome, Opera и Edge: https://jsfiddle.net/0vL2rc4d/
ПРИМЕЧАНИЕ. В firefox есть ошибка , из-за которой экран мерцает при прокрутке и фиксируется размытый фон. если есть какое-то исправление, дайте мне знать
источник
Это приведет к наложению размытия поверх содержимого:
источник