原生js实现鼠标跟随效果

发布时间 - 2026-01-10 23:19:30    点击率:

话不多说,请看代码:

<!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>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# js鼠标跟随效果  # 鼠标跟随效果  # js实现简单鼠标跟随效果的方法  # 简单实现js鼠标跟随效果  # js鼠标跟随运动效果  # javascript鼠标跟随运动3种效果(眼球效果  # 苹果菜单  # 方向跟随)  # Js鼠标跟随代码小手点击实例方法  # JS实现的简单鼠标跟随DiV层效果完整实例  # JS实现的鼠标跟随代码(卡通手型点击效果)  # js实现鼠标跟随运动效果  # JavaScript实现的鼠标跟随特效示例【2则实例】  # js实现鼠标跟随小游戏  # 鼠标  # 多说  # 单击  # 鼠标点击  # qdfuns  # php  # misc  # www  # left  # top  # absolute  # http  # src  # body  # height  # width  # aid  # attach  # mod  # amp 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在云主机快速搭建网站站点?  浅谈javascript alert和confirm的美化  香港服务器租用每月最低只需15元?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  Internet Explorer官网直接进入 IE浏览器在线体验版网址  详解CentOS6.5 安装 MySQL5.1.71的方法  如何快速完成中国万网建站详细流程?  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  重庆市网站制作公司,重庆招聘网站哪个好?  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  如何用AI帮你把自己的生活经历写成一个有趣的故事?  Laravel如何配置任务调度?(Cron Job示例)  HTML 中动态设置元素 name 属性的正确语法详解  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Laravel Session怎么存储_Laravel Session驱动配置详解  Java类加载基本过程详细介绍  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  动图在线制作网站有哪些,滑动动图图集怎么做?  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  Laravel如何创建自定义Facades?(详细步骤)  如何在Ubuntu系统下快速搭建WordPress个人网站?  使用Dockerfile构建java web环境  手机网站制作与建设方案,手机网站如何建设?  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  历史网站制作软件,华为如何找回被删除的网站?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何彻底卸载建站之星软件?  简单实现Android验证码  如何用好域名打造高点击率的自主建站?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  PHP 500报错的快速解决方法  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  javascript读取文本节点方法小结  详解MySQL数据库的安装与密码配置  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  如何快速打造个性化非模板自助建站?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  如何在不使用负向后查找的情况下匹配特定条件前的换行符  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  jQuery validate插件功能与用法详解  奇安信“盘古石”团队突破 iOS 26.1 提权  Laravel如何处理CORS跨域请求?(配置示例)  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  音乐网站服务器如何优化API响应速度?  微信小程序 HTTPS报错整理常见问题及解决方案