鼠标点击波纹特效 html+css+js
25-04-07 04:07
804
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>
-
深入理解C++11 ——C++11新特性解析与应用
当你在书店里拿起这本书的时候,可能最想问的就是:这么多C++的书籍,为什么需要选择这一本?回答这个问题首先需要知道的是,这是一本关于... 1222 0 24-05-24 -
数组原理,如何理解 JS 的类数组
其实 JS 中一直存在一种类数组的对象,它们不能直接调用数组的方法,但是又和数组比较类似,在某些特定的编程场景中会出现,这会让很多 ... 984 0 24-05-24 -
深入 Java 虚拟机
本书讲述了Java虚拟机--运行所有Java序的抽象计算机,还讲了几种与虚拟机密切相关的核心Java API。本书通过分析讲解、可运行的示例、参考... 1220 0 24-05-28 -
经典毒鸡汤,句句“治愈”人心!
1、得不到就是得不到,别老说你不想要。2、做作业时不能抄答案,因为一但你抄了答案,你就会发现真的很快乐。3、做事一定要考虑别人的感受... 1803 0 24-08-07 -
HTML5 3D相册图片滑块轮播滑动切换
359 0 21-05-17 -
小学语文通关宝典:小学生必背古诗词75+80首
小学语文通关宝典:小学生必背古诗词75+80首.pdf 2084 0 24-07-14 -
EyouCms 易优内容管理系统
EyouCms是什么,EyouCms是一个自由和开放源码的内容管理系统,它是一个可以独立使用的内容发布系统(CMS)。以模板多、易优化、开源而闻名... 380 0 21-07-02 -
layer3.0.3基于jQuery的web弹层组件
layer是一款优秀的基于jQuery的web弹层组件增加参数 isOutAnim,用于控制是否显示关闭动画,true 或者 false撤销自动 ready 处理机制... 1119 0 24-05-24
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~