Ich versuche, jedes Mal, wenn ich auf eine Schaltfläche klicke, eine Animation zu erzielen. Auf dem Desktop funktioniert das gut, aber auf Mobilgeräten kann ich nicht den gleichen Effekt erzielen. Ich muss zuerst auf die Schaltfläche klicken, dann auf eine andere Stelle klicken, um das CSS zu defokussieren, und dann erneut auf die Schaltfläche klicken, um den Animationseffekt zu erhalten.
Das Folgende ist ein Codeausschnitt.
.btn_container { Farbe: #35f8ff; Position: relativ; Anzeige: Inline-Block; Textausrichtung: Mitte; Rand: 2,5rem automatisch; } .prog_btn { Texttransformation: Großbuchstaben; Schriftgröße: 1,3rem; Polsterung: 10px 25px; Z-Index: 3; Hintergrundfarbe: transparent; Cursor: Zeiger; Übergang: 0,2 s Ease-out; Position: relativ; Rand: automatisch; } .btn_container .svgStroke { Position: absolut; Z-Index: 1; Breite: 100 %; oben: -25 %; links: 0; } .btn_container .svgStroke Pfad { Stroke-Dasharray: 100; Stroke-Dashoffset: -800; Strichstärke: 2; Übergang: alle 1er Easy-in-out; Strich: #35f8ff; } @keyframes Bindestrich { 0 % { Stroke-Dasharray: 100; Strichstärke: 2; } 50 % { Strichstärke: 4; Strich: #35f8ff; Filter: Schlagschatten(0px 0px 3px #e8615a) Schlagschatten(0px 0px 20px #35f8ff) Schlagschatten(0px 0px 150px #35f8ff); } 100% { Stroke-Dashoffset: 800; Strichstärke: 2; } } .prog_btn:hover+.svgStroke path { Cursor: Zeiger; Animation: Strich 1,5 s Kubikbezier (0,25, 0,46, 0,45, 0,94); } .prog_btn:hover { Schriftgröße: 1,2rem; } .hinzufügen { Anzeige: Inline-Block; Rand rechts: 0,75rem; Höhe: 1,5rem; Breite: 1,5rem; }
Hier gibt es auch einen CodePen-Link.
我希望在动画结束时能够取消焦点(即模糊),但这没有起作用。
这是一个稍微笨拙的解决方法 - 这个片段在动画结束时移除了动画,并在有另一个touchstart事件时重新设置动画。它使用的是样式设置而不是类。