原生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 相关文章推荐
FireFox下XML对象转化成字符串的解决方法
Dec 09 Javascript
上传图片js判断图片尺寸和格式兼容IE
Sep 01 Javascript
JavaScript中的值类型转换介绍
Dec 31 Javascript
jQuery检测某个元素是否存在代码分享
Jul 09 Javascript
详解JavaScript的表达式与运算符
Nov 30 Javascript
JS实现列表的响应式排版(推荐)
Sep 01 Javascript
JS实现的RGB网页颜色在线取色器完整实例
Dec 21 Javascript
vue-devtools的安装步骤
Apr 23 Javascript
基于layPage插件实现两种分页方式浅析
Jul 27 Javascript
JS数组方法shift()、unshift()用法实例分析
Jan 18 Javascript
Vue 中使用 typescript的方法详解
Feb 17 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
Nov 27 Vue.js
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中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
2010/12/19 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
一些技巧性实用js代码小结
2009/10/14 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
JS解决iframe之间通信和自适应高度的问题
2016/08/24 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
2017/02/08 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
js实现烟花特效
2020/03/02 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
pandas series序列转化为星期几的实例
2018/04/11 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
泰国在线书店:SE-ED
2020/06/21 全球购物
个人简历自我鉴定
2013/10/11 职场文书
小学教师师德演讲稿
2014/05/06 职场文书
志愿者宣传口号
2014/06/17 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
房贷工资证明范本
2015/06/12 职场文书
2019年亲子运动会口号
2019/10/11 职场文书