鼠标点击波纹特效 html+css+js
25-04-07 04:07
789
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>
-
ZNDS智能电视网_智能电视论坛_智能电视软件_安卓机顶盒论坛
ZNDS智能电视网是中国知名的智能电视论坛,关注智能电视,智能电视盒,安卓电视,安卓TV,安卓机顶盒论坛,智能电视软件下载,Android智能电视机,... 1283 0 25-01-10 -
编写高质量代码 ——改善Java程序的151个建议
在学习和使用Java的过程中您是否在原本可以很快掌握或解决的问题上耗费了大量的时间和精力?也许您现在不用了,本书的很多内容都是我用曾经... 984 0 24-05-24 -
jQuery+swiper仿微信朋友圈图片放大查看预览
363 0 21-06-02 -
全历史 -- 历史知识库
全历史 -- 历史知识库,这是我见过目前为止最美、最全的历史时光机。想了解我们的历史又不想枯燥无趣?来全历史就对了,它以时间轴为线索,分国家地域,几乎把整个世界的历史进程呈现在我面前。 1158 0 24-03-07 -
教师资格证考试干货合集
中学教育知识与能力备考指导.pdf中学教育知识与能力拿证学员回忆录.pdf中学章节练习.pdf中学综合素质回忆录.pdf中学综合素质思维导图.pdf中... 847 0 24-08-19 -
涉外事务管理表格 - 企业管理表格
高层经理接待日程表.doc公务联系单.doc参观申请登记表.doc参观许可证.doc来宾出入登记表.doc来宾来厂通知单.doc接待用餐申请表.doc接待申请及报告表.doc 915 0 24-07-28 -
阿里普惠体
1026 0 24-07-23 -
笔记的技术
笔记作为读书最有效的方式之一,自己也想从这方面谈谈自己做笔记的分享。【为什么要做笔记】有出必有因,做笔记到底是为了什么呢?一般情况... 837 0 25-03-03
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~