


So erzielen Sie mit reinem CSS den Wassertropfen-Animationseffekt von Schaltfl?chen im Material Design
Oct 19, 2018 pm 04:57 PMDer Inhalt dieses Artikels befasst sich mit der Verwendung von reinem CSS, um den Wassertropfen-Animationseffekt von Schaltfl?chen im Material Design zu realisieren. Ich hoffe, dass er für Sie hilfreich ist .
Diese Art von Spezialeffekt sollte man oft sehen, es ist sehr cool, nicht wahr?
Das ist das Beste In Google Material Design übliche Spezialeffekte, es gibt viele vorgefertigte JS-Bibliotheken auf dem Markt, um diesen Spezialeffekt zu simulieren. Es ist jedoch h?ufig erforderlich, viele JS- und CSS-Bibliotheken einzuführen. In bestehenden Projekten m?chten Sie m?glicherweise nur eine solche Schaltfl?che hinzufügen, um die Benutzererfahrung zu verbessern. Da sie in js implementiert sind, achten viele auch auf Ladeprobleme.
Gibt es also eine M?glichkeit, CSS zu verwenden, um diesen besonderen Effekt zu erzielen?
Die Idee
ist eigentlich eine Animation, die von klein nach gro? w?chst . Die Verwendung von css3
Animation ist einfach zu implementieren
Beispielcode
@keyframes?ripple{ ????from?{ ????????transform:?scale(0); ????????opacity:?1; ????} ????to?{ ????????transform:?scale(1); ????????opacity:?0; ????} }
Normalerweise ist die Verwendung von js
zur Implementierung sehr einfach, das hei?t, fügen Sie a hinzu class
zum angeklickten Element und animieren Sie es dann. Entfernen Sie nach Abschluss den class
Beispielcode
var?btn?=?document.getElementById('btn'); btn.addeventlistener('click',function(){ ??addClass(btn,'animate') },false) btn.addeventlistener('transitionend',function(){//監(jiān)聽css3動(dòng)畫結(jié)束 ??removeClass(btn,'animate') },false)
Wie l?st man also eine Animation über CSS aus?
Zu den Pseudoklassen, die in der CSS-Implementierung von
css
mit der Maus interagieren, geh?ren haupts?chlich
hover
wenn die Maus vorbeigeht:active
Maus nach unten:focus
Mausfokus:checked
Maus ausgew?hlt
In vielen F?llen werden die Effekte auf unseren Seiten durch hover
erreicht, um einen Effekt auszul?sen, und wenn Sie die Maus darauf setzen drauf und sofort gehen, die Animation wird sofort beendet.
Lass es uns zuerst versuchen.
Struktur
Dies ist die Seitenstruktur und der Stil, die wir geschrieben haben
<style> .btn{ display: block; width: 300px; outline: 0; overflow: hidden; position: relative; transition: .3s; cursor: pointer; user-select: none; height: 100px; text-align: center; line-height: 100px; font-size: 50px; background: tomato; color: #fff; border-radius: 10px; } </style> <a>button</a>
Es ist sehr einfach, es ist ein gew?hnlicher Schaltfl?chenstil
Als n?chstes fügen wir den perfekten Kreis, den wir brauchen, in die Schaltfl?che ein.
Wir verwenden Pseudoelemente, um
.btn:after{ ????content:?''; ????position:?absolute; ????width:?100%; ????padding-top:?100%; ????background:?transparent; ????border-radius:?50%; ????left:?50%; ????top:?50%; ????transform:?translate(-50%,-50%) }zu erreichen
Wir entfernen den oben versteckten überlauf, verkleinern den Kreis ein wenig und sehen den Effekt
Dann schreiben wir eine Zoom-Animation
@keyframes?ripple{ ????from?{ ????????transform:translate(-50%,-50%)?scale(0); ????????/**由于我們默認(rèn)寫了變換屬性,所以這里要補(bǔ)上translate(-50%,-50%),不然就會(huì)被替換了**/ ????????background:?rgba(0,0,0,.25); ????} ????to?{ ????????transform:translate(-50%,-50%)?scale(1); ????????background:?transparent; ????} }
schweben Sie über ein kleines interaktives Erlebnis
Versuchen Sie es mit der Maus?
.btn:hover:after{ ??animation:?ripple?1s; }
Der Effekt ist immer noch gut, aber wenn die Maus zu schnell geht, schrumpft der neu erweiterte Kreis sofort wieder, was etwas inkonsistent ist
Aber das ist nicht der Effekt, den wir wollen. Was wir wollen, ist, einmal zu klicken, um einmal auszul?sen, anstatt es einfach anzulegen und es wird nie wieder ausgel?st.
Aktives Ausprobieren
In der t?glichen Arbeit wird active
h?ufig verwendet, normalerweise wegen des Klickeffekts, also probieren wir es mal aus?
.btn:active:after{ ??animation:?ripple?1s; }
Der Effekt ist auch unbefriedigend, ein bisschen ?hnlich der Bedeutung von Maus gedrückt halten, man muss gedrückt halten Klicken Sie zum Ausl?sen mit der Maus beispielsweise auf 1s
im obigen Beispiel. Klicken Sie dann auf die Schaltfl?che und fahren Sie mit 1s
fort, um den vollst?ndigen Animationseffekt zu sehen Oben wird die Animation sofort verkleinert.
Fokuserlebnis
Wenn Sie ein Element fokussieren müssen, k?nnen Sie ein tabindex
Attribut
<a>button</a>
.btn:focus:after{ ??animation:?ripple?1s; }
kann auch ausgel?st werden, aber nach dem Ausl?sen kann es erst wieder ausgel?st werden, wenn der Fokus verloren geht. Die tats?chliche Betriebsleistung besteht darin, dass nach einem Klick auf die leere Stelle drau?en geklickt wird foucs
kann nicht direkt ausgel?st werden, es wird nach dem Formularelement ausgel?st ist ausgew?hlt. Dazu müssen wir die Seitenstruktur checked
<label> ??<input><span>button</span> </label>umwandeln. Wir haben sie durch
ersetzt und das lable
-Tag eingefügt, haupts?chlich um die input[type=checkbox]
-Auswahl auszul?sen, wenn die Schaltfl?che aktiviert ist geklickt. input
.btn>span:after{ ??/**換一下選擇器**/ } .btn>input[type=checkbox]{ ??display:?none } .btn>input[type=checkbox]:checked+span:after{ ??animation:?ripple?1s; }
這樣也能觸發(fā)動(dòng)畫,但問(wèn)題是,當(dāng)再次點(diǎn)擊的時(shí)候就成了非選中狀態(tài)了,怎么觸發(fā)動(dòng)畫呢?
其實(shí)可以用:not
來(lái)實(shí)現(xiàn)
.btn>input[type=checkbox]:not(:checked)+span:after{ ??animation:?ripple?1s; }
乍一看好像挺聰明的,仔細(xì)一想,正反兩個(gè)都寫了動(dòng)畫,不就跟:checked
沒(méi)關(guān)系了?還不如直接
.btn>input[type=checkbox]+span:after{ ??animation:?ripple?1s; }
無(wú)限輪回中...
這個(gè)問(wèn)題困擾了我好久,不過(guò)皇天不負(fù)有心人,后來(lái)試著在兩種狀態(tài)下觸發(fā)不同的動(dòng)畫是可以分別觸發(fā)的,如下
.btn>input[type=checkbox]:checked+span:after{ ??animation:?ripple1?1s; } .btn>input[type=checkbox]:not(:checked)+span:after{ ??animation:?ripple2?1s; }
這個(gè)應(yīng)該很好理解吧。
那么,重點(diǎn)來(lái)了,現(xiàn)在把動(dòng)畫ripple1
和ripple2
里面的動(dòng)畫過(guò)程都改成一樣,也是可以分別觸發(fā)的,也就是說(shuō),只要?jiǎng)赢嬅Q不一樣,css都會(huì)當(dāng)成不同的動(dòng)畫來(lái)處理
這樣就簡(jiǎn)單了,我們只需要默認(rèn)一個(gè)狀態(tài),選中一個(gè)狀態(tài),然后分別觸發(fā)名稱不同的動(dòng)畫就行了~
.btn>input[type=checkbox]+span:after{ ??animation:?ripple-in?1s; } .btn>input[type=checkbox]:checked+span:after{ ??animation:?ripple-out?1s; } @keyframes?ripple-in{ ????from?{ ????????transform:translate(-50%,-50%)?scale(0); ????????background:?rgba(0,0,0,.25); ????} ????to?{ ????????transform:translate(-50%,-50%)?scale(1); ????????background:?transparent; ????} } @keyframes?ripple-out{/*僅僅名稱不同*/ ????from?{ ????????transform:translate(-50%,-50%)?scale(0); ????????background:?rgba(0,0,0,.25); ????} ????to?{ ????????transform:translate(-50%,-50%)?scale(1); ????????background:?transparent; ????} }
效果就如文章一開始所示,完美
完整demo如下
https://codepen.io/xboxyan/pe...
一些不足
由于上述動(dòng)畫樣式在默認(rèn)情況下就會(huì)被觸發(fā),所以頁(yè)面加載進(jìn)來(lái)就會(huì)看到按鈕上的水滴動(dòng)畫運(yùn)動(dòng)一次,不過(guò)也不是特別明顯,還可以接受。
其次,實(shí)際效果肯定是希望鼠標(biāo)點(diǎn)擊哪里,就以該點(diǎn)為中心擴(kuò)散,我們css肯定是做不到這點(diǎn)的,只能從中心擴(kuò)散,這也只能妥協(xié)了。這里提供一個(gè)思路,可以使用css的變量,每次點(diǎn)擊的時(shí)候吧相應(yīng)的值存在style里面,這樣css中也能用上。
希望能用css今后挖掘出更多有趣的效果^
Das obige ist der detaillierte Inhalt vonSo erzielen Sie mit reinem CSS den Wassertropfen-Animationseffekt von Schaltfl?chen im Material Design. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Backdrop-Filter wird verwendet, um visuelle Effekte auf den Inhalt der Elemente anzuwenden. 1. Verwenden Sie Backdrop-Filter: Blur (10px) und andere Syntax, um den frostierten Glasffekt zu erzielen. 2. unterstützt mehrere Filterfunktionen wie Unsch?rfe, Helligkeit, Kontrast usw. und kann überlagert werden. 3. Es wird h?ufig in der Glaskartendesign verwendet, und es ist notwendig, sicherzustellen, dass sich die Elemente mit dem Hintergrund überschneiden. 4. Moderne Browser haben eine gute Unterstützung, und @Supports k?nnen verwendet werden, um Downgrade -L?sungen bereitzustellen. 5. Vermeiden Sie überm??ige Unsch?rfewerte und h?ufiges Neuzuziehen, um die Leistung zu optimieren. Dieses Attribut wirkt sich nur aus, wenn sich hinter den Elementen Inhalte befinden.

User Agent Stylesheets sind die Standard -CSS -Stile, die Browser automatisch gelten, um sicherzustellen, dass HTML -Elemente, die keine benutzerdefinierten Stile hinzugefügt haben, immer noch grundlegend lesbar sind. Sie beeinflussen das anf?ngliche Erscheinungsbild der Seite, es gibt jedoch Unterschiede zwischen Browsern, die zu einer inkonsistenten Anzeige führen k?nnen. Entwickler l?sen dieses Problem h?ufig durch Zurücksetzen oder Standardisierungsstile. Verwenden Sie das Computer- oder Stilfeld der Entwickler -Tools, um die Standardstile anzuzeigen. Zu den gemeinsamen Abdeckungsvorg?ngen geh?ren das L?schen innerer und ?u?erer Margen, ?nderungen von Link -Unterstrichen, die Anpassung der Titelgr??en und die Vereinigung der Schaltfl?chenstile. Das Verst?ndnis von User Agent-Stilen kann dazu beitragen, die konsistente Cross-Browser-Konsistenz zu verbessern und eine pr?zise Layout-Steuerung zu erm?glichen.

UsTheelementWitHinatagTocreateEmanticSearchfield.2.IncludeaForAccessibility, settheform'Saction undMethod = "AttributestosendDatoAsearchendPointWithasharableUrl.

Definieren Sie@keyframesBounceWith0%, 100%Attranslatey (0) und 50%Attranslatey (-20px) TocreateabasicBounce.2.ApplytheanimationToanelementusingAnimimation: Bounce0.6Sease-In-Outinfinfinitmooth, ContinuousMotion.3.Forrealism, verwendet@keyFramesrealist

rel = "styleSheet" linkScssFilesforstylingThePage; 2.rel = "vorlad" HintStopreloadcriticalResourcesForperformance; 3.rel = "icon" setStheWebsit'sfavicon;

Die Verwendung von Tags ist die einfachste und empfohlene Methode. Die Syntax ist für moderne Browser geeignet, um PDF direkt einzubetten. 2. Die Verwendung von Tags kann eine bessere Unterstützung für Steuerungs- und Sicherungsinhalte bieten. Syntax ist und bietet Download -Links in Tags als Backup -L?sungen, wenn sie nicht unterstützt werden. 3.. Es kann über Google DocsViewer eingebettet werden, es wird jedoch nicht empfohlen, aufgrund von Datenschutz- und Leistungsproblemen h?ufig zu verwenden. 4. Um die Benutzererfahrung zu verbessern, sollten geeignete H?hen festgelegt werden, reaktionsschnelle Gr??en (z. B. H?he: 80VH) und PDF -Download -Links bereitgestellt werden, damit Benutzer sie selbst herunterladen und anzeigen k?nnen.

ThetargetAttributeinanHtmlanchortagSpecifieswheretoophelinkedDocument.1._SelfoPenTheLinkinTheSametab (Standard) .2._BlankopensTheLeNanewtaborWindow.3._ParentopenTheParentFrame

Verwenden Sie Elemente und setzen Sie die Aktions- und Methodenattribute fest, um die Datenübermittlungsadresse und -methode anzugeben. 2. Fügen Sie Eingabefelder mit Namensattribut hinzu, um sicherzustellen, dass die Daten vom Server erkannt werden k?nnen. 3.. Verwenden oder erstellen Sie eine Einreichungsschaltfl?che, und nach dem Klicken sendet der Browser die Formulardaten an die angegebene URL, die vom Backend verarbeitet wird, um die Dateneinreichung abzuschlie?en.
