The code looks like this: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .btn{ display: block; width: 300px; height: 100px; margin: 50px; outline: 0; overflow: hidden; position: relative; transition: .3s; cursor: pointer; user-select: none; text-align: center; line-height: 100px; font-size: 50px; background: tomato; color: #fff; border-radius: 10px; } .btn>span{ position: absolute; left: 0; top: 0; width: 100%; height: 100%;} .btn>span:after{ content: ''; position: absolute; background: transparent; border-radius:50%; width: 100%; padding-top: 100%; margin-left: -50%; margin-top: -50%; left: var(--x,-100%); top: var(--y,-100%); } .btn:active{ background:orangered; } .btn>input[type=checkbox]{ display: none } .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: scale(0); background: rgba(0,0,0,.25) } to { transform: scale(1.5); background: transparent } } @keyframes ripple-out{ from { transform: scale(0); background: rgba(0,0,0,.25) } to { transform: scale(1.5); background: transparent } } </style> </head> <body> <label class="btn" tabindex="1"> <input type="checkbox"><span onclick="ripple(this,event)">button</span> </label> </body> <script> function ripple(dom,ev){ console.log(ev) var x = ev.offsetX; var y = ev.offsetY; dom.style.setProperty('--x',x+'px'); dom.style.setProperty('--y',y+'px'); } </script> </html> This concludes this article about the sample code for implementing water drop ripple animation button effect with CSS+JS. For more relevant CSS water drop ripple animation button content, please search 123WORDPRESS.COM’s previous articles or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future! |
<<: Detailed explanation of Nginx+Tomcat load balancing cluster installation and configuration case
>>: Summary of knowledge points on using calculated properties in Vue
Recently, I have done a simple study on the data ...
question The code has no prompt: Many non-front-e...
There has been a lot of discussion about H1 recent...
This article shares the specific code of vue3 enc...
When I was writing a project yesterday, I needed ...
I recently encountered a strange thing when debug...
Recently, when I was learning jQuery, I came acro...
Table of contents The browser's rendering mec...
Ellipses appear when multi-line text overflows Th...
Preface : Today I was asked, "Have you carefu...
Table of contents Install Software Management Ano...
Table of contents Functionalcomponents Childcompo...
Table of contents Preface Introduction ngram full...
Uninstall the old version of MySQL (skip this ste...
Solve the problem of not being able to access the...