Mam problem z zastosowaniem efektu rozmycia do półprzezroczystego elementu DIV nakładki. Chciałbym, żeby wszystko za divem było zamazane, na przykład:
Oto plik jsfiddle, który nie działa: http://jsfiddle.net/u2y2091z/
Jakieś pomysły, jak to działa? Chciałbym, aby było to tak nieskomplikowane, jak to tylko możliwe i aby działało w różnych przeglądarkach. Oto CSS, którego używam:
#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
Chad Johnson
źródło
źródło
CSS filter
nie jest obsługiwany w przeglądarce Firefox, nie powinieneś go używać.Odpowiedzi:
Oto przykład wykorzystujący
svg
filtr.Chodzi o to, aby użyć
svg
elementu zheight
tym samym co#overlay
i zastosować na nimfeGaussianblur
filtr. Ten filtr jest nakładany nasvg
image
element. Aby nadać mu efekt wytłaczania, możesz użyć znakubox-shadow
na dole nakładki.Przeglądarka obsługuje
svg
filtry .Demo on Codepen
źródło
Aby uzyskać prostszą i aktualną odpowiedź:
Uwaga: obsługa przeglądarek nie jest idealna, ale w większości przypadków rozmycie nie jest konieczne.
źródło
Udało mi się zebrać informacje od wszystkich tutaj i dalej Google, i wymyśliłem następujące, które działają w Chrome i Firefox: http://jsfiddle.net/xtbmpcsu/ . Nadal pracuję nad stworzeniem tego dla IE i Opery.
Kluczem jest umieszczenie zawartości wewnątrz elementu div, do którego zastosowano filtr:
A potem CSS:
Więc maska ma zastosowane filtry. Zwróć także uwagę na użycie url () dla filtru ze
<svg>
znacznikiem dla wartości - ten pomysł pochodzi z http://codepen.io/AmeliaBR/pen/xGuBr . Jeśli zdarzy ci się zminimalizować swój CSS, może być konieczne zastąpienie jakichkolwiek spacji w znaczniku filtra SVG przez „% 20”.Więc teraz wszystko wewnątrz elementu div maski jest zamazane.
źródło
filter: url(...
. Usuń to, a Chrome pomyślnie używafilter: blur(10px);
.Jeżeli szukasz rzetelnego podejścia cross-browser dzisiaj , nie znajdzie się wielki. Najlepszą opcją jest utworzenie dwóch obrazów (w niektórych środowiskach może to zostać zautomatyzowane) i ułożenie ich w taki sposób, aby jeden nakładał się na drugi. Poniżej utworzyłem prosty przykład:
Choć skuteczne, nawet to podejście niekoniecznie jest idealne. To powiedziawszy, daje pożądany rezultat .
źródło
Oto możliwe rozwiązanie.
HTML
CSS
Wiem, że CSS można uprościć i prawdopodobnie powinieneś pozbyć się identyfikatorów. Chodzi o to, aby użyć elementu div jako pojemnika do przycinania, a następnie zastosować rozmycie na duplikacie obrazu. Skrzypce
Aby to zadziałało w Firefoksie, musiałbyś użyć hacka SVG .
źródło
-webkit-
te, które nie są zaimplementowane w tych przeglądarkach. Standardową deklarację lepiej umieścić na końcu - po wszystkich wersjach z prefiksem.Zamiast dodawać kolejne rozmycie tła do treści, możesz użyć filtra tła . FYI IE 11 i Firefox mogą go nie obsługiwać. Sprawdź caniuse .
Próbny:
źródło
źródło
Wymyśliłem takie rozwiązanie.
Kliknij, aby wyświetlić obraz z efektem rozmycia
Jest to rodzaj sztuczki, która używa absolutnie pozycjonowanego dziecka
div
, ustawia jego obraz tła tak samo jak rodzic,div
a następnie używabackground-attachment:fixed
właściwości CSS razem z tymi samymibackground
właściwościami ustawionymi w elemencie nadrzędnym.Następnie zastosujesz
filter:blur(10px)
(lub dowolną wartość) na dziecku div.zobacz na codepen
źródło
Oto rozwiązanie, które działa ze stałym tłem, jeśli masz stałe tło i masz nałożone elementy i potrzebujesz do nich rozmytego tła, to rozwiązanie działa:
Obraz mamy taki prosty HTML:
Stałe tło dla
<body>
elementu wrapper:I tutaj na przykład mamy nałożony element z białym przezroczystym tłem:
Teraz musimy użyć dokładnie tego samego obrazu tła naszego opakowania dla naszych elementów nakładki, używam go jako
:before
klasy pseudo:Ponieważ ustalone tło działa w ten sam sposób zarówno w elementach wrapper, jak i overlay, mamy tło w dokładnie tej samej pozycji przewijania elementu nakładanego i możemy je po prostu rozmyć. Oto działające skrzypce, przetestowane w przeglądarkach Firefox, Chrome, Opera i Edge: https://jsfiddle.net/0vL2rc4d/
UWAGA: W przeglądarce Firefox występuje błąd powodujący migotanie ekranu podczas przewijania i naprawiono rozmyte tło. jeśli jest jakieś rozwiązanie, daj mi znać
źródło
Spowoduje to rozmycie nakładki na zawartość:
źródło