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
Preface: This article mainly introduces the conte...
Recently, new projects have used springcloud and ...
Overview of MySQL MySQL is a relational database ...
Table of contents 1. props/$emit Introduction Cod...
Scary, isn't it! Translation in the picture: ...
Preface Recently, when I was building a project, ...
The results are different in Windows and Linux en...
Table of contents 1. Digital Enumeration 2. Strin...
Here is a record of how to make a scroll bar appe...
The automatic scrolling effect of the page can be...
Environment: CentOS 7 Official documentation: htt...
When a company developer executes an insert state...
1. Use css sprites. The advantage is that the smal...
Table of contents What is a Mapping Difference be...
Table of contents What is a trigger Create a trig...