JavaScript实现跟随鼠标移动的盒子


Posted in Javascript onJanuary 28, 2021

本文实例为大家分享了JavaScript实现跟随鼠标移动的具体代码,供大家参考,具体内容如下

跟随鼠标移动的盒子(包括检测边界值)

效果图:

JavaScript实现跟随鼠标移动的盒子

代码:

<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>
  div {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 100px;
    height: 100px;
    background-color: red;
  }
</style>
 
<body>
  <div>111111111</div>
  <script>
    var div = document.getElementsByTagName('div')[0];
    div.onmousedown = function(e) {
      e = window.event || e;
      // 鼠标按下 获取鼠标距离页面左侧距离
      var x = e.clientX;
      // 获取鼠标距离页面上侧距离
      var y = e.clientY;
      // 元素距离页面左侧距离
      var elex = div.offsetLeft;
      // 元素距离页面上侧距离
      var eley = div.offsetTop;
      // 相减得到鼠标距离元素的距离
      var X = x - elex;
      var Y = y - eley;
      console.log(X, Y);
      document.onmousemove = function(e) {
          e = window.event || e;
          // 鼠标移动过程中 获取鼠标距离页面距离
          var movex = e.clientX;
          var movey = e.clientY;
          // 1.左侧边界值
          // 元素移动过程中距离页面左侧距离
          var leftx = movex - X;
          var lefty = movey - Y;
          // 1.左侧边界值
          if (leftx <= 0) {
            leftx = 0;
          }
          // 2.上侧边界值
          if (lefty <= 0) {
            lefty = 0
          }
          // 3.右侧边界值
          // 页面可视区宽 -元素宽
          var rightx = document.documentElement.clientWidth - div.offsetWidth;
          if (leftx >= rightx) {
            leftx = rightx
          }
          // 4.下侧边界值
          // 页面可视区高 -元素高
          var righty = document.documentElement.clientHeight - div.offsetHeight;
          if (lefty >= righty) {
            lefty = righty;
          }
          // 鼠标移动过程中 获取鼠标距离页面距离 - 鼠标距离元素的距离 =元素的left top值
          div.style.left = leftx + 'px';
          div.style.top = lefty + 'px';
 
 
 
        }
        // 抬起清除移动事件
      document.onmouseup = function() {
          document.onmousemove = null;
        }
        // 阻止默认事件
      return false;
 
    }
  </script>
</body>
 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 组件之旅(二)编码实现和算法
Oct 28 Javascript
Jquery 常用方法经典总结
Jan 28 Javascript
JS对象与JSON格式数据相互转换
Feb 20 Javascript
ECMAScript6函数默认参数
Jun 12 Javascript
全面解析Angular中$Apply()及$Digest()的区别
Aug 04 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
Aug 19 Javascript
深入理解vue Render函数
Jul 19 Javascript
小程序点赞收藏功能的实现代码示例
Sep 07 Javascript
js异步上传多张图片插件的使用方法
Oct 22 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
Aug 29 Javascript
javascript设计模式之装饰者模式
Jan 30 Javascript
Vue多选列表组件深入详解
Mar 02 Vue.js
vue.js实现点击图标放大离开时缩小的代码
Jan 27 #Vue.js
使用JS实现鼠标放上图片进行放大离开实现缩小功能
Jan 27 #Javascript
vscode自定义vue模板的实现
Jan 27 #Vue.js
vue+echarts实现中国地图流动效果(步骤详解)
Jan 27 #Vue.js
js实现鼠标切换图片(无定时器)
Jan 27 #Javascript
JavaScript实现切换多张图片
Jan 27 #Javascript
jquery实现点击左右按钮切换图片
Jan 27 #jQuery
You might like
PHP array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
php进程daemon化的正确实现方法
2018/09/06 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
DOM相关内容速查手册
2007/02/07 Javascript
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
jQuery find和children方法使用
2011/01/31 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
Python 提取dict转换为xml/json/table并输出的实现代码
2016/08/28 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
python爬虫基础知识点整理
2020/06/02 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
PHP如何去执行一个SQL语句
2016/03/05 面试题
C++面试题目
2013/06/25 面试题
如何做好总经理助理
2013/11/12 职场文书
报到证丢失证明
2014/01/11 职场文书
运动会四百米广播稿
2014/01/19 职场文书
企业口号大全
2014/06/12 职场文书
科级干部培训心得体会
2016/01/06 职场文书
合作协议书格式范本
2016/03/21 职场文书
python代码实现备忘录案例讲解
2021/07/26 Python
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers