原生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 相关文章推荐
JSON+HTML实现国家省市联动选择效果
May 18 Javascript
详解JavaScript对W3C DOM模版的支持情况
Jun 16 Javascript
js实现正则匹配中文标点符号的方法
Dec 23 Javascript
Select2.js下拉框使用小结
Oct 24 Javascript
JS数组返回去重后数据的方法解析
Jan 03 Javascript
jQuery命名空间与闭包用法示例
Jan 12 Javascript
详解vuex 中的 state 在组件中如何监听
May 23 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
Nov 21 Javascript
vue中关闭eslint的方法分析
Aug 04 Javascript
JavaScript根据json生成html表格的示例代码
Oct 24 Javascript
详解ES6 export default 和 import语句中的解构赋值
May 28 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
Jul 10 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
dedecms模版制作使用方法
2007/04/03 PHP
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
php实现微信公众号无限群发
2015/10/11 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
google jQuery 引用文件,jQuery 引用地址集合(jquery 1.2.6至jquery1.5.2)
2011/04/24 Javascript
高效率JavaScript编写技巧整理
2013/08/23 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
JavaScript中EventBus实现对象之间通信
2020/10/18 Javascript
[08:40]Navi Vs Newbee
2018/06/07 DOTA
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
Python切图九宫格的实现方法
2019/10/10 Python
pytorch查看通道数 维数 尺寸大小方式
2020/05/26 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
德国购买健身器材:AsVIVA
2017/08/09 全球购物
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
办公室主任先进事迹
2014/01/18 职场文书
职业规划实施方案
2014/06/10 职场文书
销售辞职信范文
2015/03/02 职场文书
小学生安全教育主题班会
2015/08/12 职场文书
行为习惯主题班会
2015/08/14 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle