赞
踩
网上多是基于js-setTimeout及setInterval实现的动画效果,此篇基于css3-transition实现。
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv=Content-Type content="text/html;charset=utf-8">
- </head>
- <body></body>
- <script>
- var clickCount = 0;
- document.onclick = function(e) {
-
- /**
- * 根据鼠标点击坐标初始化dom,通过过渡属性实现动画效果
- * dom渲染完成后设置目标偏移位置及目标透明度
- * 过渡结束后移除dom
- * @author:slzs
- */
- var symbol = document.createElement("b");
-
- symbol.style.position = "absolute";
- symbol.style.left = (e.pageX - 10) + "px";
- symbol.style.top = (e.pageY - 15) + "px";
- symbol.style.zIndex = 9999;
- symbol.style.userSelect = "none"; // 禁止文本被选中,影响美观
- symbol.style.fontSize = "18px";
- symbol.style.color = `rgb(${Math.floor(Math.random()*256)},${Math.floor(Math.random()*256)},${Math.floor(Math.random()*256)})`; // 随机颜色
- symbol.style.transition="all 1.5s";
- symbol.addEventListener("transitionend",function(et){ // 动画结束移除dom
- if(et.propertyName == "opacity" && et.srcElement.style.opacity==0)
- et.srcElement.remove();
- });
-
- // 轮换几个预制字符
- switch(++clickCount){
- case 1:
- symbol.innerText = "✔";
- break;
- case 2:
- symbol.innerText = "❤";
- break;
- default:
- symbol.innerText = "☺";
- clickCount = 0;
- }
- document.body.appendChild(symbol);
-
- requestAnimationFrame(()=>{
- symbol.style.top = (e.pageY - 100) + "px";
- symbol.style.opacity = 0;
- });
- };
- </script>
- </html>
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv=Content-Type content="text/html;charset=utf-8">
- </head>
- <body></body>
- <script>
- document.onclick = function(e) {
-
- /**
- * 根据鼠标点击坐标初始化dom,通过过渡属性实现动画效果
- * dom渲染完成后设置目标偏移位置及目标透明度
- * 过渡结束后移除dom
- * @author:slzs
- */
- var symbol = document.createElement("div");
-
- symbol.style.position = "absolute";
- symbol.style.left = (e.pageX) + "px";
- symbol.style.top = (e.pageY) + "px";
- symbol.style.zIndex = 9999;
- symbol.style.transition="all 1.5s";
- symbol.style.border="1px red solid";
- symbol.style.borderColor = `rgb(${Math.floor(Math.random()*256)},${Math.floor(Math.random()*256)},${Math.floor(Math.random()*256)})`; // 随机颜色
- symbol.style.borderRadius="100%";
- symbol.style.width = "0px";
- symbol.style.height = "0px";
- symbol.addEventListener("transitionend",function(et){ // 动画结束移除dom
- if(et.propertyName == "opacity" && et.srcElement.style.opacity==0)
- et.srcElement.remove();
- });
-
- document.body.appendChild(symbol);
-
- requestAnimationFrame(()=>{
- symbol.style.width = "80px";
- symbol.style.margin = "-7px -40px";
- symbol.style.height = "14px";
- symbol.style.opacity = 0;
- });
- };
- </script>
- </html>
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。