原生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 相关文章推荐
获取鼠标在div中的相对位置的实现代码
Dec 30 Javascript
javascript中call和apply的用法示例分析
Apr 02 Javascript
AngularJS实现全选反选功能
Dec 08 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
May 26 Javascript
js基于cookie方式记住返回页面用法示例
May 27 Javascript
echarts3 使用总结(绘制各种图表,地图)
Jan 05 Javascript
JS中如何实现点击a标签返回页面顶部的问题
Jan 19 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
Jan 22 Javascript
JavaScript闭包的简单应用
Sep 01 Javascript
解决vue 绑定对象内点击事件失效问题
Sep 05 Javascript
vue全局自定义指令-元素拖拽的实现代码
Apr 14 Javascript
vue路由分文件拆分管理详解
Aug 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
php字符串的替换,分割和连接方法
2016/05/23 PHP
手把手编写PHP框架 深入了解MVC运行流程
2016/09/19 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
微信小程序开发背景图显示功能
2018/08/08 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
JavaScript canvas绘制渐变颜色的矩形
2020/02/18 Javascript
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
python爬取内容存入Excel实例
2019/02/20 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
深入浅析Python 函数注解与匿名函数
2020/02/24 Python
python画图常规设置方式
2020/03/05 Python
html5中为audio标签增加停止按钮动作实现方法
2013/01/04 HTML / CSS
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
德国咖啡批发商:Coffeefair
2019/08/26 全球购物
市场营销大学生职业规划书
2014/02/25 职场文书
效能监察建议书
2014/05/19 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
Python&Matlab实现樱花的绘制
2022/04/07 Python