JavaScript原生代码实现鼠标跟随案例(附注释)
2018-01-24 16:41
543 查看
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>鼠标跟随案例</title> <style> *{ padding: 0; margin: 0; } body{ height: 5000px; } .box { position: absolute; top: 0; left: 0; width: 50px; height: 50px; background-color: #aaaaaa; border-radius: 7px; text-align: center; line-height: 50px; cursor: pointer; } </style> <script> window.onload =function () { //获取相关元素 var box = document.getElementsByClassName("box")[0]; var timer = null; // animate(box,y); var tarx = 0;var tary = 0; var leaderx = 0; var leadery = 0; document.onmousemove = function (event) { //兼容低版本IE的事件对象写法 event = event||window.event; var x = event.pageX||scroll().left+event.clientX; var y = event.pageY||scroll().top+event.clientY; //让鼠标在box中心 tarx = x-25; tary = y-25; //使用定时器之前,清除定时器,以免出现bug clearInterval(timer); //开启定时器 timer = setInterval(function () { //x方向的动画处理部分 leaderx = box.offsetLeft; var speedx = (tarx-leaderx)/10; speedx = speedx>0?Math.ceil(speedx):Math.floor(speedx); leaderx = leaderx+speedx; box.style.left = leaderx+"px"; //y方向的动画处理部分 leadery = box.offsetTop; var speedy = (tary-leadery)/10; speedy = speedy>0?Math.ceil(speedy):Math.floor(speedy); leadery = leadery+speedy; box.style.top = leadery+"px"; //判断是否需要清除定时器 注意:此处不清除定时器会有bug,效果可自行注释掉; if(Math.abs(tarx-box.offsetLeft)<=Math.abs(speedx)&&Math.abs(tary-box.offsetTop)<=Math.abs(speedy)){ box.style.left = tarx+"px"; box.style.top = tary+"px"; clearInterval(timer); } },15); } //scroll兼容性封装 function scroll() { return { "top": window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop, "left": window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft } } } </script> </head> <body> <div class="box">1</div> </body> </html>
相关文章推荐
- JavaScript原生代码实现楼层跳跃(js部分有注释)
- javascript简单拖拽实现代码(鼠标事件 mousedown mousemove mouseup)
- 跟随鼠标一起流动的粒子动画 JS 原生代码
- 【前端】javascript实现鼠标跟随特效
- 基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
- JavaScript原生代码实现返回顶部缓动效果
- 原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
- 原生javascript实现拖动元素示例代码
- 原生javascript实现拖动元素示例代码
- javascript原生代码实现ajax请求
- 使用 Javascript 并结合 XML 制作滑动透明的菜单,且该菜单拥有跟随鼠标的注释
- 背景图跟随鼠标移动的Mootools插件实现代码
- javascript实现图片跟随鼠标移动效果的方法
- JavaScript实现跟随鼠标移动而移动的文字
- 原生 JavaScript 代码和Jquery实现对比
- 新浪微博自动转发评论 源码 按键精灵实现 详细注释 几十行代码实现 涉及图像识别模拟键盘鼠标
- 原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
- javascript实现页面右侧在线客服始终跟随鼠标滚动而上下滚动且始终位于屏幕中间
- javascript实现图片跟随鼠标移动效果的方法
- 用JavaScript实现使用鼠标画线的示例代码