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面向对象编程
Mar 18 Javascript
jQuery中 noConflict() 方法使用
Apr 25 Javascript
js控制淡入淡出示例代码
Nov 12 Javascript
jQuery焦点图切换简易插件制作过程全纪录
Aug 27 Javascript
laypage分页控件使用实例详解
May 19 Javascript
JS函数多个参数默认值指定方法分析
Nov 28 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
Dec 26 Javascript
vue.js中过滤器的使用教程
Jun 08 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
Sep 12 jQuery
微信小程序云开发实现数据添加、查询和分页
May 17 Javascript
解决layer弹出层自适应页面大小的问题
Sep 16 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
Oct 25 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
joomla内置的表单验证功能使用方法
2010/06/11 PHP
php代码运行时间查看类代码分享
2011/08/06 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
CI框架给视图添加动态数据
2014/12/01 PHP
PHP单例模式详解及实例代码
2016/12/21 PHP
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
2013/04/15 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
javascript基本类型详解
2014/11/28 Javascript
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
AngularJS中的表单简单入门
2016/07/28 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
判断网页编码的方法python版
2016/08/12 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
Python IDE Pycharm中的快捷键列表用法
2019/08/08 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
如何基于Python批量下载音乐
2019/11/11 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
如何写python的配置文件
2020/06/07 Python
Django框架请求生命周期实现原理
2020/11/13 Python
详解python polyscope库的安装和例程
2020/11/13 Python
数控专业应届生求职信
2013/11/27 职场文书
大学军训的体会
2014/11/08 职场文书
初中优秀学生评语
2014/12/29 职场文书
质量保证书怎么写
2015/02/27 职场文书
电力安全学习心得体会
2016/01/18 职场文书
python库sklearn常用操作
2021/08/23 Python