鼠标点击波纹特效 html+css+js
25-04-07 04:07
802
0
定义标签
<div class="card"> <img src="3.3.png" alt="x" width="100%" /> <h3>北极光之夜</h3> <p>生活下去,错误下去,堕落下去,为胜利而欢呼,从生命中重新创造生命!</p> </div>
卡片和文字的基本样式
.card { width: 200px; height: 300px; box-shadow: 1px 1px 5px #555; cursor: pointer; background-color: rgb(243, 243, 243); position: relative; overflow: hidden; } .card h3, .card p { padding: 5px; text-align: center; font-family: "fangsong"; font-weight: 700; user-select: none; }
cursor: pointer; 鼠标样式为小手。 overflow: hidden; 子元素大小超出卡片区域的被隐藏。 user-select: none; 文本不可选中。
js部分,见注释
<script> /* 获取元素 */ var card = document.querySelector(".card"); /* 绑定点击事件 */ card.addEventListener("click", function (e) { /* 获取鼠标点击的水平位置 */ let x = e.clientX - this.offsetLeft; /* 获取鼠标点击的垂直位置 */ let y = e.clientY - this.offsetTop; /* 创建一个span元素 */ let circle = document.createElement("span"); /* 为span元素添加定位的 left 属性 */ circle.style.left = x + "px"; /* 为span元素添加定位的 top 属性 */ circle.style.top = y + "px"; /* 卡片添加创建好的span元素 */ card.appendChild(circle); /* 1s后移除span元素 */ setInterval(function () { circle.remove(); }, 1000); }); </script>
添加上一步创建的 span 元素的css样式
.card span { position: absolute; transform: translate(-50%, -50%); background-color: rgb(255, 254, 254); border-radius: 50%; animation: big 1s; } @keyframes big { 0% { width: 0px; height: 0px; opacity: 1; } 100% { width: 400px; height: 400px; opacity: 0; } }
position: absolute; 绝对定位。 transform: translate(-50%,-50%); 向左和上移动自身宽度和高度的一半。 animation: big 1s; 定义动画,刚好1s完成动画 。 opacity: 1; 不透明。 opacity: 0; 透明。
完整源码
<!doctype html> <html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { height: 100vh; display: flex; justify-content: center; align-items: center; background-image: radial-gradient(white, black); } .card { width: 200px; height: 300px; box-shadow: 1px 1px 5px #555; cursor: pointer; background-color: rgb(243, 243, 243); position: relative; overflow: hidden; } .card h3, .card p { padding: 5px; text-align: center; font-family: "fangsong"; font-weight: 700; user-select: none; } .card span { position: absolute; transform: translate(-50%, -50%); background-color: rgb(255, 254, 254); border-radius: 50%; animation: big 1s; } @keyframes big { 0% { width: 0px; height: 0px; opacity: 1; } 100% { width: 400px; height: 400px; opacity: 0; } } </style> </head> <body> <div> <img src="3.3.png" alt="x" width="100%" /> <h3>北极光之夜</h3> <p>生活下去,错误下去,堕落下去,为胜利而欢呼,从生命中重新创造生命!</p> </div> <script> var card = document.querySelector(".card"); card.addEventListener("click", function (e) { let x = e.clientX - this.offsetLeft; let y = e.clientY - this.offsetTop; let circle = document.createElement("span"); circle.style.left = x + "px"; circle.style.top = y + "px"; card.appendChild(circle); setInterval(function () { circle.remove(); }, 1000); }); </script> </body> </html>
-
个人音乐台小程序
【微信小程序 - 个人音乐台】是一个以音乐为主题的微信小程序项目,它提供了用户自定义音乐播放的平台。这个项目不仅包含完整的源代码,... 935 0 24-09-17 -
漂流瓶小程序
实现仿微信漂流瓶功能的关键在于理解微信小程序的前端开发和后端数据处理流程。根据提供的资料《微信小程序实战:打造仿微信漂流瓶功能》,... 1284 0 24-11-05 -
纯css二级导航栏
441 0 21-06-02 -
田间小站 - 高质量英语学习
田间小站是一个值得你每天一看的高质量英语学习网站,它通过多种形式的学习教程和学习资料,帮助你提高英语口语,词汇,写作,阅读。 810 0 21-12-07 -
字母索引搜索
373 0 21-06-02 -
Hadoop运维12问 --应急手册
1291 0 24-05-28 -
splice变相跳出forEach循环
众所周知,forEach循环是无法中途跳出循环的,有点同学说不是可以通过抛出错误跳出循环吗?是的。抛出异常是广为流传的一种方法,结果是我... 724 0 25-04-07 -
源暎漫画体
1132 0 24-07-24
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~