原生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 相关文章推荐
简单的JS多重继承示例
Mar 13 Javascript
jquery时间下拉框小例子
Apr 15 Javascript
JavaScript中使用Substring删除字符串最后一个字符
Nov 03 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
Jun 16 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
Jun 09 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
Sep 02 Javascript
详谈表单重复提交的三种情况及解决方法
Aug 16 Javascript
浅谈mint-ui loadmore组件注意的问题
Nov 08 Javascript
React手稿之 React-Saga的详解
Nov 12 Javascript
微信小程序封装多张图片上传api代码实例
Dec 30 Javascript
keep-alive保持组件状态的方法
Dec 02 Javascript
基于vuex实现购物车功能
Jan 10 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
Terran建筑一览
2020/03/14 星际争霸
PHP反射机制用法实例
2014/08/28 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
开启PHP的伪静态模式
2015/12/31 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
2010/11/20 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
js实现文字列表无缝滚动效果
2017/06/23 Javascript
Angular排序实例详解
2017/06/28 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
python中的闭包函数
2018/02/09 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
生产总经理岗位职责
2013/12/19 职场文书
五型班组建设方案
2014/02/10 职场文书
学生打架检讨书
2014/10/20 职场文书
元旦晚会开场白
2015/05/29 职场文书
宾馆卫生管理制度
2015/08/06 职场文书
Python+tkinter实现高清图片保存
2022/03/13 Python
分享几个简单MySQL优化小妙招
2022/03/31 MySQL
《群青的幻想曲》京力秋树角色PV公开
2022/04/08 日漫
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android