原生js实现鼠标跟随效果
2019/6/27 21:08:05
本文主要是介绍原生js实现鼠标跟随效果,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
话不多说,请看代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>鼠标跟随效果</title> <style type="text/css"> *{margin: 0;padding: 0;} img{position:absolute;top:0;left:0;} </style> </head> <body> <img src="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=21984166dad229792b21c2e1277bece5" height="50" width="50" alt="" id="img"> </body> <script type="text/javascript"> (function(window){ // 获取对象 var img = document.getElementById("img"); // 为页面添加单击事件,鼠标点击时图片滑动到鼠标所在位置 document.onclick = function(event){ var event = event || window.event; // 获取鼠标在页面上的坐标 var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft; var pageY = event.pageY || event.clientY + document.documentElement.scrollTop; // 减去图片自身宽高的一半,使鼠标在图片中间 pageX = pageX - img.offsetWidth/2; pageY = pageY - img.offsetWidth/2; animate(img,{"left":pageX,"top":pageY}); }; // 封装缓动函数 function animate(obj,json,fn){ clearInterval(obj.timer); obj.timer = setInterval(function(){ var flog = true ; for( k in json ){ if( k === "zindex" ){ obj.style[k] = json[k]; }else if( k === "opacity" ){ var leader = getStyle(obj,k) * 100; var target = json[k] * 100; var step = ( target - leader ) / 10 ; step = step > 0 ? Math.ceil( step ) : Math.floor( step ); leader = leader + step ; obj.style[k] = leader / 100; }else{ var leader = parseInt( getStyle(obj,k) ); var target = json[k]; var step = ( target - leader) / 10 ; step = step > 0 ? Math.ceil( step ) : Math.floor( step ); leader = leader + step; obj.style[k] = leader + "px"; }; if( leader !== target ){ flog = false; } } if( flog ){ clearInterval(obj.timer); if( fn ){ fn(); }; }; }, 15) }; // 封装获取计算后样式的函数 function getStyle(obj,attr){ if( window.getComputedStyle ){ return window.getComputedStyle(obj,null)[attr]; }else{ return obj.currentStyle[attr]; }; }; })(window) </script> </html>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持找一找教程网!
这篇关于原生js实现鼠标跟随效果的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-06vue 新建功能多条数据(还没和后端交互)还能看详情 数据是前端缓存到本地吗?-icode9专业技术文章分享
- 2024-05-30React Native常用组件-点击组件
- 2024-05-30uniapp+vue3+uv-ui手机端后台OA管理模板
- 2024-05-29Python网络爬虫的时候json=就是让你少写个json.dumps()
- 2024-05-27React Native常用组件-展示组件
- 2024-05-27React Native常用组件-列表组件
- 2024-05-09vue3开发前端表单缓存自定义指令,移动端h5必备插件
- 2024-05-09React Hooks在class组件中的使用方式
- 2024-03-30[OIDC in Action] 2. 基于OIDC(OpenID Connect)的SSO(纯JS客户端)
- 2024-03-29terraform jsonencode