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 相关文章推荐
js中parseInt函数浅谈
Jul 31 Javascript
javascript校验价格合法性实例(必须输入2位小数)
May 05 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
Oct 31 Javascript
JavaScript基础知识学习笔记
Dec 02 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
Nov 13 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
Dec 16 Javascript
JavaScript 中有关数组对象的方法(详解)
Aug 15 Javascript
javascript 缓冲运动框架的实现
Sep 29 Javascript
JS实现非首屏图片延迟加载的示例
Jan 06 Javascript
vue实现模态框的通用写法推荐
Feb 26 Javascript
jQuery获取随机颜色的实例代码
May 21 jQuery
Vuex的各个模块封装的实现
Jun 05 Javascript
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过滤危险html代码
2008/08/18 PHP
Javascript valueOf 使用方法
2008/12/28 Javascript
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
javascript判断ie浏览器6/7版本加载不同样式表的实现代码
2011/12/26 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
[31:01]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS Orenda
2014/05/23 DOTA
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
Python加载带有注释的Json文件实例
2018/05/23 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
2019/03/27 Python
python中的itertools的使用详解
2020/01/13 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
html5与css3小应用
2013/04/03 HTML / CSS
XML文档面试题
2015/08/05 面试题
应届生人事助理求职信
2013/11/09 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
被告代理词范文
2015/05/25 职场文书
旷工检讨书大全
2015/08/15 职场文书
计算机实训心得体会
2016/01/14 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android