原生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学习笔记(十三) js闭包介绍(转)
Jun 20 Javascript
Js注册协议倒计时的小例子
Jun 24 Javascript
jquery实现图片翻页效果
Dec 23 Javascript
通过复制Table生成word和excel的javascript代码
Jan 20 Javascript
使用javascript获取页面名称
Dec 23 Javascript
最棒的Angular2表格控件
Aug 10 Javascript
关于Javascript中defer和async的区别总结
Sep 20 Javascript
给easyui datebox扩展一个清空的实例
Nov 09 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
Mar 08 Javascript
微信小程序文章详情页跳转案例详解
Jul 09 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
Jul 31 Javascript
vue 扩展现有组件的操作
Aug 14 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
php 执行系统命令的方法
2009/07/07 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
js获得网页背景色和字体色的方法
2014/03/21 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
javascript常用的设计模式
2017/02/09 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
微信小程序实现天气预报功能
2018/07/18 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
vue组件命名和props命名代码详解
2019/09/01 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
python类的继承实例详解
2017/03/30 Python
Python解惑之整数比较详解
2017/04/24 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
python如何创建TCP服务端和客户端
2018/08/26 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
Python多进程编程常用方法解析
2020/03/26 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
Django实现简单的分页功能
2021/02/22 Python
机械设计及其自动化求职推荐信
2014/02/17 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
《恐龙》教学反思
2014/04/27 职场文书
一体化教学实施方案
2014/05/10 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
安全生产标语口号
2015/12/26 职场文书