原生js实现鼠标跟随效果


Posted in Javascript onFebruary 28, 2017

话不多说,请看代码:

<!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>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
javascript 24小时弹出一次的代码(利用cookies)
Sep 03 Javascript
深入理解JavaScript系列(2) 揭秘命名函数表达式
Jan 15 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
Jul 03 Javascript
js判断字符长度及中英文数字等
Mar 19 Javascript
使用jquery写个更改表格行顺序的小功能
Apr 29 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
Apr 22 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
Feb 15 Javascript
JavaScript箭头函数_动力节点Java学院整理
Jun 28 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
Sep 25 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
Jan 22 jQuery
vue实现将数据存入vuex中以及从vuex中取出数据
Nov 08 Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 jQuery
canvas实现简易的圆环进度条效果
Feb 28 #Javascript
JS实现的tab切换选项卡效果示例
Feb 28 #Javascript
jQuery Pagination分页插件使用方法详解
Feb 28 #Javascript
完美解决input[type=number]无法显示非数字字符的问题
Feb 28 #Javascript
canvas红包照片实例分享
Feb 28 #Javascript
详解本地Node.js服务器作为api服务器的解决办法
Feb 28 #Javascript
jquery操作select取值赋值与设置选中实例
Feb 28 #Javascript
You might like
PHP开发文件系统实例讲解
2006/10/09 PHP
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
2014/01/17 PHP
PHPCMS手机站伪静态设置详细教程
2017/02/06 PHP
PHP常用操作类之通信数据封装类的实现
2017/07/16 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
vue.js的安装方法
2017/05/12 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
vue的diff算法知识点总结
2018/03/29 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Python读取mp3中ID3信息的方法
2015/03/05 Python
Python中Django 后台自定义表单控件
2017/03/28 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
详解python中的json和字典dict
2018/06/22 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
如何提高python 中for循环的效率
2020/04/15 Python
一些Solaris面试题
2013/03/22 面试题
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
2014年检察院个人工作总结
2014/12/09 职场文书
老公保证书怎么写
2015/02/26 职场文书
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android
mysql查看表结构的三种方法总结
2022/07/07 MySQL