原生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 相关文章推荐
(function(){})()的用法与优点
Mar 11 Javascript
简单的js表单验证函数
Oct 28 Javascript
JS实现切换标签页效果实例代码
Nov 01 Javascript
jQuery实现表格颜色交替显示的方法
Mar 09 Javascript
jquery实现顶部向右伸缩的导航区域代码
Sep 02 Javascript
AngularJS基础 ng-value 指令简单示例
Aug 03 Javascript
几种响应式文字详解
May 19 Javascript
JavaScript实现微信号随机切换代码
Mar 09 Javascript
JavaScript对JSON数组简单排序操作示例
Jan 31 Javascript
小程序实现自定义导航栏适配完美版
Apr 02 Javascript
浅谈javascript中的prototype和__proto__的理解
Apr 07 Javascript
解决vue-router的beforeRouteUpdate不能触发
Apr 14 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
PHP5 的对象赋值机制介绍
2011/08/02 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
PHP基础知识介绍
2013/09/17 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
jquery json 实例代码
2010/12/02 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
2017/09/20 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
详解Vue2 SSR 缓存 Api 数据
2017/11/20 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
vuejs中父子组件之间通信方法实例详解
2020/01/17 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
Python 的内置字符串方法小结
2016/03/15 Python
python下10个简单实例代码
2017/11/15 Python
详解Python中import机制
2020/09/11 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
2020/12/04 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
Eclipse面试题
2014/03/22 面试题
班组长安全生产职责
2013/12/16 职场文书
关于打架的检讨书
2014/01/17 职场文书
初中校园广播稿
2014/02/02 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
统计岗位职责
2014/02/21 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书
pycharm部署django项目到云服务器的详细流程
2021/06/29 Python