Glasfenster Was wir heute erreichen werden, ist der Regentropfeneffekt. Bevor wir jedoch den Regentropfeneffekt erreichen, erzeugen wir zunächst den Milchglaseffekt. Ohne Glasfenster dringt der Regen ins Haus ein und es gibt nichts, woran er klopfen kann. <div Klasse='Fenster'></div> .Fenster { Position: absolut; Breite: 100vw; Höhe: 100vh; Hintergrund: URL("https://cn.bing.com//th?id=OHR.ParrotsIndia_ZH-CN8386276023_UHD.jpg"); Hintergrundgröße: Abdeckung; Hintergrundposition: 100 %; Filter: Unschärfe (10px); } Tatsächlich geht es darum, einem Bild einen unscharfen Effekt zu verleihen, der wie Milchglas aussieht. Ein Tropfen Regen Der Effekt von Regentropfen ist sehr raffiniert. Schauen wir uns den Gesamteffekt eines Regentropfens an. Dieser Regentropfen ist eigentlich in zwei Teile geteilt. Der erste Teil ist der Schatten unten, der eigentlich ein Rand ist. Der Code lautet wie folgt: .Grenze { Position: absolut; Rand links: 92px; Rand oben: 51px; Randradius: 100 %; Kastenschatten: 0 0 0 2px rgba (0, 0, 0, 0,6); transformieren: drehenY(0); Breite: 20px; Höhe: 28px; } <div Klasse='Rand'></div> Der Rand wird durch die Attribute width und height sowie border-radius in eine Ellipse gezogen und anschließend der Schatten mit box-shadow als Schatten des Wassertropfens herausgezogen. Der endgültige Effekt des Randes ist wie folgt: Dann gibt es noch den Wassertropfenteil .Regentropfen { Filter: Helligkeit (1,2); Position: absolut; Rand links: 90px; Rand oben: 50px; Hintergrundgröße: 5vw 5vh; Randradius: 100 %; Hintergrundbild: URL("https://cn.bing.com//th?id=OHR.ParrotsIndia_ZH-CN8386276023_UHD.jpg"); transformieren: drehen(180 Grad) drehenY(0); Hintergrundposition: 48,1994160428 % 54,3259834959 %; Breite: 24px; Höhe: 28px; } <div Klasse = 'Regentropfen'></div>
Die Wirkung eines einzelnen Wassertropfens ohne Schatten ist wie folgt: Zufällige Regentropfen Regen fällt nie tropfenweise und auch nicht in einem regelmäßigen Muster. Um Regentropfen zufällig auf den Glasfenstern erscheinen zu lassen, wird das CSS-Doodle-Framework verwendet. <css-doodle use="var(--rule)"></css-doodle> Erstellen Sie zunächst eine benutzerdefinierte Komponente von CSS-Doodle --Regel: ( :doodle { @Raster: 10x10/100 %; Überlauf: sichtbar; } Erstellen Sie ein 10*10-Raster, so dass höchstens 100 Regentropfen erscheinen können Verwenden Sie transform:scale, um Regentropfen zufällig größer oder kleiner zu machen :vor { Inhalt: ''; Position: absolut; Rand links: @var(--mleft); Rand oben: @var(--mtopb); Randradius: 100 %; Kastenschatten: 0 0 0 @var(--shadow-size) rgba(0, 0, 0, 0,6); transformieren: drehenY(0); Breite: @var(--widthb); Höhe: @var(--height); } :nach { Inhalt: ''; Filter: Helligkeit (1,2); Position: absolut; Rand links: @var(--mleft); Rand oben: @var(--mtopa); Hintergrundgröße: 5vw 5vh; Randradius: 100 %; Hintergrundbild: URL("https://cn.bing.com//th?id=OHR.ParrotsIndia_ZH-CN8386276023_UHD.jpg"); transformieren: drehen(180 Grad) drehenY(0); Hintergrundposition: @r(1%, 100%) @r(1%, 100%); Breite: @var(--widtha); Höhe: @var(--height); } Kommen Ihnen die :before und :after hier bekannt vor? Tatsächlich ist der Inhalt in :before der Stil der vorherigen Umrandung und der Inhalt in :after der Stil des vorherigen Regentropfens. Inhalt ist erforderlich, denn wenn das Attribut „Inhalt“ im Pseudoelement (vorher, nachher) nicht festgelegt ist, ist das Pseudoelement nutzlos und die gesamte Konfiguration in :vorher und :nachher ist ungültig. Um die Regentropfen klarer erscheinen zu lassen, wird der Filter „Helligkeit (1,2)“ hinzugefügt, um die Regentropfen heller erscheinen zu lassen. Das Seltsame hier ist @var(), was eigentlich eine CSS-Variable ist. Es ist in css-doodle gekapselt und hat die gleiche Funktion wie var() von CSS. Sehen wir uns die Definitionen dieser Variablen an. --Größe:(4 + @r(1, 8)); --Schattengröße: calc(((@var(--size)*0.3) - 1)*1px); --mleft:@r(1, 100)px; --mtop:@r(1, 100); --mtop1:(@var(--mtop) - 1); --mtopb:calc(@var(--mtop)*1px); --mtopa:calc(@var(--mtop1)*1px); --Höhe:@r(15, 25)px; --width:@r(8, 20); --width1:(@var(--width) + 5); --widthb:calc(@var(--width)*1px); --widtha:calc(@var(--width1)*1px); Hier sind einige Fallstricke zur Erklärung: Falle Nr. 1: css-doodle stellt @calc() bereit, aber die Berechnung hier muss trotzdem calc() von CSS verwenden und die Verwendung von @calc() ist ungültig. Der endgültige Effekt ist wie folgt: Wie kann ich ohne Animation an mein Fenster klopfen? Wenn die Regentropfen einfach auf das Fenster fielen, hätte man kein Klopfen verspürt. Um das Klopfen widerzuspiegeln, habe ich beschlossen, die Regentropfen zu bewegen. :vor { Inhalt: ''; Position: absolut; Rand links: @var(--mleft); Rand oben: @var(--mtopb); Randradius: 100 %; Kastenschatten: 0 0 0 @var(--shadow-size) rgba(0, 0, 0, 0,6); transformieren: drehenY(0); Breite: @var(--widthb); Höhe: @var(--height); Deckkraft: 0; Animation: Regentropfen fallen 500 ms, Kubik-Bézier (0,175, 0,885, 0,32, 1,275); Animationsfüllmodus: vorwärts; Animationsverzögerung: @var(--delay); } :nach { Inhalt: ''; Filter: Helligkeit (1,2); Position: absolut; Rand links: @var(--mleft); Rand oben: @var(--mtopa); Hintergrundgröße: 5vw 5vh; Randradius: 100 %; Hintergrundbild: URL("https://cn.bing.com//th?id=OHR.ParrotsIndia_ZH-CN8386276023_UHD.jpg"); transformieren: drehen(180 Grad) drehenY(0); Hintergrundposition: @r(1%, 100%) @r(1%, 100%); Breite: @var(--widtha); Höhe: @var(--height); Deckkraft: 0; Animation: Regentropfen fallen 500 ms, Kubik-Bézier (0,175, 0,885, 0,32, 1,275); Animationsfüllmodus: vorwärts; Animationsverzögerung: @var(--delay); } Der entscheidende Punkt ist, dass die letzten drei Zeilen in :before und :after verwendet werden, um den Animationseffekt zu erzielen. cubic-bezier() steuert die Geschwindigkeit der Animation und macht den Effekt von Regentropfen, die auf das Glasfenster fallen, realistischer. animation-delay Der Zeitpunkt, zu dem die Regentropfen erscheinen, ist zufällig, was ebenfalls dazu dient, den Effekt realistischer zu gestalten. Realistische Effekte sind wirklich problematisch. Werfen wir einen Blick auf die @keyframe-Einstellungen von raindrop-fall @keyframes Regentropfen-Fall { 0% { Deckkraft: 0; transformieren: drehen (180 Grad) skalieren (2,5, 2,3) drehenY (0); } 100 % { Deckkraft: 1; transformieren: drehen(180 Grad) skalieren(1, 1) drehenY(0); } } Zusammenfassen Oben ist der Beispielcode, den ich Ihnen vorgestellt habe, um mithilfe von CSS Regentropfen-Animationseffekte zu erzielen. Ich hoffe, er wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! |
<<: MySQL-Abfrageoptimierung: Eine Tabellenoptimierungslösung für 1 Million Daten
>>: Eine kurze Einführung in JavaScript-Arrays
1. „Get“ wird verwendet, um Daten vom Server abzu...
Wenn wir einen Buchstaben auf der Tastatur eingeb...
Vor Kurzem hat das Projekt die Umgebung gewechsel...
Inhaltsverzeichnis Abfrage zum Verbinden mehrerer...
Nachfragehintergrund Das Team muss Integrationste...
Ändern Sie die Gruppe, zu der ein Benutzer in Lin...
Hinweis: Das System ist Ubuntu 14.04LTS, ein 32-B...
1. Wie oben erwähnt Ich habe dieses Makro gesehen...
Inhaltsverzeichnis 1. Prototyp 2. Prototypzeiger:...
Ich verwende hier das Ubuntu 16.04-System. Instal...
Inhaltsverzeichnis Das Grundprinzip von MySQL Mas...
Ein Student im zweiten Studienjahr fragte mich, w...
1. Seitenanforderungen 1) Verwenden Sie standardm...
VMware Workstation ist eine leistungsstarke virtu...
Vorwort Wenn Sie ein Topmenü erstellen, müssen Si...