Wygląda na to, że nakładka Apple to coś więcej niż tylko przezroczystość. Jakieś pomysły, jak osiągnąć ten efekt za pomocą CSS i ewentualnie JS?
javascript
css
user-interface
blur
Grudkowaty
źródło
źródło
Odpowiedzi:
Z CSS3 jest to możliwe:
Przykład tutaj => jsfiddle
źródło
-moz-filter: blur()
. Zamiast tego musisz użyć filtra SVG, zobacz moją odpowiedź po szczegóły.Sprawiłeś, że chciałem spróbować, więc tak zrobiłem, sprawdź tutaj przykład:
http://codepen.io/Edo_B/pen/cLbrt
Za pomocą:
Otóż to.
Uważam również, że można to zrobić dynamicznie dla dowolnego ekranu, jeśli użyjesz płótna do skopiowania bieżącej domeny i zamazania jej.
źródło
[Edytuj] W przyszłości (mobilna) Safari 9 będzie
-webkit-backdrop-filter
właśnie do tego. Zobacz to długopis, który zrobiłem, aby go zaprezentować.Myślałem o tym przez ostatnie 4 tygodnie i wpadłem na takie rozwiązanie.
Live Demo
[Edytuj] Napisałem bardziej dogłębny post na temat CSS-Tricks
Ta technika wykorzystuje regiony CSS, więc obsługa przeglądarki nie jest w tej chwili najlepsza. ( http://caniuse.com/#feat=css-regions )
Kluczową częścią tej techniki jest oddzielenie treści od układu za pomocą regionu CSS. Najpierw zdefiniuj
.content
element za pomocąflow-into:content
a następnie użyj odpowiedniej struktury, aby rozmyć nagłówek.Struktura układu:
Dwie ważne części tego układu to
.header__background
i.phone__content
- są to kontenery, przez które powinna przepływać zawartość.Korzystanie z regionów CSS jest proste, ponieważ
flow-from:content
(.content
płynie do nazwanego regionucontent
)Teraz najtrudniejsza część. Chcemy zawsze przepływać zawartość przez
.header__background
sekcję, ponieważ jest to sekcja, w której zawartość zostanie zamazana. (używającwebkit-filter:blur(10px);
)Robi
transfrom:translateY(-$HeightOfTheHeader)
to,.content
aby upewnić się, że zawartość zawsze będzie przepływać przez.header__background
. Ta transformacja zawsze ukrywa zawartość pod nagłówkiem. Naprawienie tego jest łatwe w dodawaniuaby dostosować się do transformacji.
Obecnie to działa w:
źródło
Jest to możliwe w przypadku FireFox teraz dzięki atrybutowi stylu elementu .
Ten eksperymentalny atrybut umożliwia użycie dowolnej treści HTML jako obrazu tła. Tak więc, aby stworzyć tło, potrzebujesz trzech nakładek:
-moz-element
tłem, które ustawia zawartość. Zwróć uwagę, że FX nie obsługuje tegofilter: blur()
atrybutu, więc potrzebujemy pliku SVG.Więc połącz:
Filtr rozmycia SVG (działa w FX, inne przeglądarki mogą używać
filter:blur()
):Styl rozmycia CSS:
Wreszcie 3 warstwy:
Następnie, aby to przenieść, po prostu ustaw
background-position
(przykład w jQuery, ale możesz użyć wszystkiego):Tutaj jest jako JS Fiddle, tylko FX.
źródło
Sprawdź tę stronę demonstracyjną.
To demo wykorzystuje html2canvas do renderowania dokumentu jako obrazu.
http://blurpopup.labs.daum.net/
źródło
Ten długopis, który znalazłem poprzedniego dnia, wydawał się robić to pięknie, tylko trochę css i 21 linii javascript. Nie słyszałem o poleceniu cloneNode js, dopóki tego nie znalazłem, ale na pewno działało to na pewno.
http://codepen.io/rikschennink/pen/zvcgx
Szczegóły: A. W zasadzie przegląda element div z zawartością i wywołuje na nim cloneNode, więc tworzy duplikat, który następnie umieszcza w przepełnieniu: ukryty obiekt nagłówka znajdujący się na górze strony. B. Następnie po prostu nasłuchuje przewijania, więc oba obrazy wydają się pasować i rozmywa obraz nagłówka ... annnnd BAM. Efekt osiągnięty.
Nie do końca wykonalne w CSS, dopóki nie uzyskają odrobiny skryptowalności wbudowanej w język.
źródło
Przykład jest tutaj:
http://versie1.com/TEST/ios7/
źródło
zrobiłem wczoraj szybkie demo, które faktycznie robi to, o czym mówisz. http://bit.ly/10clOM9 to demo wykonuje paralaksę w oparciu o akcelerometr, więc działa najlepiej na samym iPhonie. Po prostu kopiuję zawartość, którą nakładamy, do elementu o stałej pozycji, który się rozmywa.
uwaga: przesuń palcem w górę, aby zobaczyć panel.
(Użyłem okropnych identyfikatorów CSS, ale masz pomysł)
źródło
Nie jestem tego pewien, uważam, że CSS nie jest w stanie tego zrobić w tej chwili
Jednak Chris Coyier napisał na blogu o starej technice z wieloma obrazami, aby osiągnąć taki efekt, http://css-tricks.com/blurry-background-effect/
źródło
Sprawdź ten http://codepen.io/GianlucaGuarini/pen/Hzrhf Wygląda na to, że działa bez duplikowania obrazu tła elementu pod nim. Zobacz też, jak w przykładzie teksty się zacierają.
Vague.js
źródło
Dobre wieści
Od dziś 11 kwietnia 2020 r. Jest to łatwo możliwe dzięki
backdrop-filter
właściwości CSS, która jest teraz stabilną funkcją w Chrome, Safari i Edge.Chciałem to w naszej hybrydowej aplikacji mobilnej, która jest również dostępna w Android / Chrome Webview i Safari WebView.
Przykład kodu:
Po prostu dodaj właściwość CSS:
Przykład interfejsu użytkownika 1
Zobacz, jak działa w tym piórze lub wypróbuj demo:
Przykład interfejsu użytkownika 2
Weźmy przykład aplikacji McDonald's, ponieważ jest dość kolorowa. Zrobiłem zrzut ekranu i dodałem jako tło w
body
mojej aplikacji.Chciałem pokazać na nim tekst z błyszczącym efektem. Korzystając
backdrop-filter: blur(20px);
z nakładki powyżej, mogłem to zobaczyć: 😍źródło
backdrop-filter
nadal jednak nie działa automatycznie w przeglądarce Firefox. Wątpię, aby użytkownicybackdrop-filter
celowo włączali opcje aktywacji, aby zobaczyć ten efekt.Używałem filtrów svg, aby osiągnąć podobne efekty dla duszków
<feGaussianBlur stdDeviation="10"/>
przykład przykład Keitha .<image ...>
tagu, aby zastosować go do dowolnego obrazu, a nawet użyć wielu obrazów.źródło
To może ci pomóc !!
To dynamicznie zmienia tło, tak jak robi to IOS
źródło
Oto moje spojrzenie na to z jQuery. Rozwiązanie nie jest uniwersalne, co oznacza, że należałoby dostosować niektóre pozycje i rzeczy w zależności od faktycznego projektu.
Zasadniczo to, co zrobiłem, to: klonowanie na wyzwalaczu / usuwanie całego tła (co powinno być rozmyte) do pojemnika z niewyraźną zawartością (który opcjonalnie ma ukryte przepełnienie, jeśli nie ma pełnej szerokości) i ustawianie go poprawnie. Uwaga jest taka, że przy zmianie rozmiaru okna rozmyty element div będzie niezgodny z oryginałem pod względem pozycji, ale można to rozwiązać za pomocą niektórych funkcji zmiany rozmiaru okna (szczerze mówiąc, nie mogłem się tym przejmować).
Byłbym bardzo wdzięczny za opinię na temat tego rozwiązania!
Dzięki
Oto skrzypce , nie testowane w IE.
HTML
CSS
jQuery
źródło