Piszemy z Web Animations API event przycisku, który po wciśnięciu znika na krótką chwilę, po czym pojawia się znowu. Idealne do różnego rodzaju przycisków kopiowania. Wykorzystamy właściwość CSS filter z funkcją opacity oraz Web Animations API.

Nasz przycisk w HTMLu, który złapiemy w JS i będziemy animować:

<button id="btn">Click me</button>

Znająć „filter: opacity” (można także użyć właściwości opacity zamiast filter, też to w CSS mamy) oraz Web Animations API możemy napisać sobie coś takiego:

window.addEventListener('DOMContentLoaded', function(){
            let btn = document.querySelector('#btn');
            btn.addEventListener('click', function(){
                btn.animate([
                
                {filter: 'opacity(.5)'},
                {filter: 'opacity(.3)'},
                {filter: 'opacity(0)'},
                {filter: 'opacity(.3)'},
                {filter: 'opacity(.5)'},
                {filter: 'opacity(.7)'}], 
                {duration: 300, iterations: 1});
            });
            
        });

Potem spędzić kilka/kilkanaście minut na dopieszczaniu animacji co do milisekundy, jeszcze CSS dopieścić (na domyślnym guziku wygląda dobrze, można sobie wyobrazić o ile lepiej będzie na ostylowanym wyglądać) i już mamy naszą animację.

Dobra, to może było za proste, więc zróbmy sobie jeszcze animację zwiększającego się na chwilkę przycisku:

window.addEventListener('DOMContentLoaded', function(){
            let btn = document.querySelector('#btn');
            btn.addEventListener('click', function(){
                btn.animate([
                {transform: 'scale(1.1)'},
                {transform: 'scale(1.2)'},
                {transform: 'scale(1.3)'},
                {transform: 'scale(1.2)'},
                {transform: 'scale(1.1)'},
                ],
                {duration: 200, iterations: 1});
            });   
        });