原生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 学习初步 入门教程
Mar 25 Javascript
一个可绑定数据源的jQuery数据表格插件
Jul 17 Javascript
Javascript中各种trim的实现详细解析
Dec 10 Javascript
javascript实现类似超链接的效果
Dec 26 Javascript
JavaScript获取当前网页标题(title)的方法
Apr 03 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
Sep 19 Javascript
浅谈JavaScript 中有关时间对象的方法
Aug 15 Javascript
Bootstrap超大屏幕的实现代码
Mar 22 Javascript
AngularJS2中一种button切换效果的实现方法(二)
Mar 27 Javascript
浅谈angularjs中响应回车事件
Apr 24 Javascript
微信小程序实现人脸识别
May 25 Javascript
layer实现弹出层自动调节位置
Sep 05 Javascript
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
什么是调频(FM)、调幅(AM)、短波(SW)、长波(LW)
2021/03/01 无线电
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
PHP二维数组去重算法
2016/12/17 PHP
PHP 类与构造函数解析
2017/02/06 PHP
jquery remove方法应用详解
2012/11/22 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
使用vue实现通过变量动态拼接url
2020/07/22 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
python多线程http下载实现示例
2013/12/30 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
Python探索之pLSA实现代码
2017/10/25 Python
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
2019/03/22 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
Under Armour安德玛荷兰官网:美国高端运动科技品牌
2019/07/10 全球购物
一套软件测试笔试题
2014/07/25 面试题
自主招生自荐信
2013/12/08 职场文书
销售找工作求职信
2013/12/20 职场文书
廉政教育心得体会
2014/01/01 职场文书
人事经理岗位职责范本
2014/08/04 职场文书
史上最牛的辞职信
2015/02/28 职场文书