原生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 轻松搞定快捷留言功能 只需一行代码
Apr 01 Javascript
jQuery 过滤not()与filter()实例代码
May 10 Javascript
禁用Enter键表单自动提交实现代码
May 22 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
Jun 18 Javascript
javascript实现右侧弹出“分享到”窗口效果
Feb 01 Javascript
JS for...in 遍历语句用法实例分析
Aug 24 Javascript
微信小程序 解决swiper不显示图片的方法
Jan 04 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
Jan 08 Javascript
原生js实现中奖信息无间隙滚动效果
Jan 18 Javascript
纯js实现html转pdf的简单实例(推荐)
Feb 16 Javascript
了解javascript中let和var及const关键字的区别
May 24 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
May 13 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电台频率大全 - 20 广西省
2020/03/11 无线电
一个SQL管理员的web接口
2006/10/09 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
基于php 随机数的深入理解
2013/06/05 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
通过JS来判断页面控件是否获取焦点
2014/01/03 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
实例浅析js的this
2016/12/11 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
小程序实现选择题选择效果
2018/11/04 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
python使用opencv进行人脸识别
2017/04/07 Python
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
使用Python处理Excel表格的简单方法
2018/06/07 Python
深入浅析Python传值与传址
2018/07/10 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
请解释virtual关键字的含义
2015/06/17 面试题
一套软件开发工程师笔试题
2015/05/18 面试题
初婚未育证明
2014/01/15 职场文书
可贵的沉默教学反思
2014/02/06 职场文书
企业办公室岗位职责
2014/03/12 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
公司员工体检通知
2015/04/21 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
python requests模块的使用示例
2021/04/07 Python
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle
Python list列表删除元素的4种方法
2021/11/01 Python
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫