Async Loading Button
ReactButton, der beim Klick in einen Ladezustand und dann auf Fertig wechselt.
1function RippleButton() {2 const [ripples, setRipples] = React.useState([]);3 const add = (e) => {4 const r = e.currentTarget.getBoundingClientRect();5 const id = Date.now();6 setRipples((rs) => [...rs, { id, x: e.clientX - r.left, y: e.clientY - r.top }]);7 setTimeout(() => setRipples((rs) => rs.filter((x) => x.id !== id)), 600);8 };9 return (10 <button onClick={add} style={{position:'relative',overflow:'hidden',padding:'14px 34px',border:0,borderRadius:14,11 background:'linear-gradient(135deg,#8b5cf6,#06b6d4)',color:'#fff',font:'600 15px system-ui',cursor:'pointer'}}>12 Klick mich13 {ripples.map((r) => (14 <span key={r.id} style={{position:'absolute',left:r.x,top:r.y,width:8,height:8,borderRadius:'50%',15 background:'rgba(255,255,255,.6)',transform:'translate(-50%,-50%)',animation:'rp .6s ease-out'}} />16 ))}17 <style>{'@keyframes rp{to{width:220px;height:220px;opacity:0}}'}</style>18 </button>19 );20}Keine Installation, kein Build-Step — reine Standards, sofort einsatzbereit.
Klicke oben auf „Code kopieren“ — HTML und CSS landen in deiner Zwischenablage.
Füge das Markup an der gewünschten Stelle deiner Seite oder Komponente ein.
Übernimm den <style>-Block bzw. die Klassen in deine Stylesheet-Datei.
Aus derselben Kategorie oder mit passenden Tags.
Melde dich an, um zu kommentieren.