js实现移动蒙版层

news2024/9/25 13:18:29

移动蒙版层

可在整个页面拖动方块,但方块不能超出页面

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>移动蒙版层案例</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    body {
      position: relative;
    }

    .container {
      position: relative;
      top: 10px;
      left: 10px;
      width: 800px;
      height: 800px;
      background-color: #368;
    }

    .mask {
      position: absolute;
      width: 400px;
      height: 280px;
      padding: 20px;
      background-color: #690;
      box-shadow: 0 0 8px #222;
      cursor: move;
    }
  </style>
</head>

<body>

 
    <div class="mask">

    </div>
 

  <script src='js/common.js'></script>
  <script>
    var oMask = $('.mask')


    var eventTypeMap = {
      isDown : false,
      startPos : {
        x : 0,
        y : 0,
        left : 0,
        top : 0
      },
      targetEle : null,
      limit : {
        maxLeft :window.innerWidth - oMask.offsetWidth,
        maxTop : window.innerHeight - oMask.offsetHeight,
      },
      'mousedown': function (e) {
        this.isDown = true
        this.targetEle = e.target
        this.startPos.x = e.clientX,
        this.startPos.y = e.clientY
        this.startPos.left = getPosition(oMask).left
        this.startPos.top = getPosition(oMask).top
      },
      'mousemove': function (e) {
        if(this.isDown === true) {
          var diffX = e.clientX - this.startPos.x
          var diffY = e.clientY - this.startPos.y
          var diffLeft = this.startPos.left + diffX
          var diffTop = this.startPos.top + diffY
          diffLeft = Math.max(0, diffLeft)
          diffLeft = Math.min(this.limit.maxLeft, diffLeft)
          diffTop = Math.max(0, diffTop)
          diffTop = Math.min(this.limit.maxTop, diffTop)
          setStyle(oMask, {
            top : diffTop + 'px',
            left : diffLeft + 'px',
           
          })
          if (e.clientX < 0 || e.clientY < 0) {
            isDown = false;
          }
        }
      },
      'mouseup': function (e) {
        this.isDown = false
        this.targetEle = null
      },
    }
 
    oMask.addEventListener('mousedown' , drawEle, false)
    document.addEventListener('mousemove' , drawEle, false)
    document.addEventListener('mouseup' , drawEle, false)
    
    function drawEle (e) {
      if(eventTypeMap[e.type] && typeof eventTypeMap[e.type] === 'function') {
        eventTypeMap[e.type](e)
      }
    }
  </script>
</body>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1910002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能算法工程师(中级)课程1-Opencv视觉处理之基本操作

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程1-Opencv视觉处理之基本操作。OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库。它提供了各种视觉处理函数&#xff0c;并…

Linux 创建新虚拟机的全过程图解

一、创建新虚拟机 1.选择自定义 2.直接下一步 3.选择稍后安装 4.设置虚拟机名和安装位置 5.配置处理器&#xff08;处理器数量&#xff1a;4、每个处理器的内核&#xff1a;2&#xff09; 6. 内存选择 7.网络类型 8. IO控制器类型-默认推荐 9.磁盘类型-默认推荐 10.选择虚拟磁…

xcode中对项目或者文件文件夹重命名操作

提起揭秘答案&#xff1a;选中文件后&#xff0c;按下回车键就可以了 如果在项目中对新建的文件夹或者文件名称不满意或者输入错误了&#xff0c;想要修改一下名称该怎么办&#xff1f;如果是在文件或文件夹上右键是没有rename选项的&#xff1a; 其实想要重命名&#xff0c;很…

minicoda python环境搭建-cnblog

anconnda精简版miniconda使用 Python和anconnda介绍 关于Python环境最出名的是Python和anconnda,Anconnda强的地方时anconnda不用每创建一个新项目&#xff0c;就配置一下虚拟环境。只需要创建一个Python环境包&#xff0c;电脑全局是通用的。但是Anconnda本身安装包大小就有一…

【Linux线程篇】探索Linux多线程:并行编程的入门指南

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; Linux线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部运行&am…

YOLO-World实时开集检测论文阅读

论文&#xff1a;《YOLO-World: Real-Time Open-Vocabulary Object Detection》 代码&#xff1a;https://github.com/AILab-CVC/YOLO-World 1.Abstract 我们介绍了YOLO World&#xff0c;这是一种创新的方法&#xff0c;通过在大规模数据集上进行视觉语言建模和预训练&#…

Alpha 3D扫描仪

3D视觉。就这么简单。 用于机器视觉任务的工业3D扫仪 规格表

k8s离线部署芋道源码前端

目录 概述 编译Dockerfile 构建Dockerfilenginx.conf构建 k8s部署前端镜像部署ingress 概述 本篇将对 k8s离线部署芋道源码前端 进行详细的说明&#xff0c;对如何构建 Dockerfile&#xff0c;如何整合 Nginx&#xff0c;如何整合 ingress 进行实践。 相关文章&#xff1a;naco…

热烈祝贺!全视通多家客户上榜全球自然指数TOP100!

2024年6月18日&#xff0c;全球医疗机构自然指数TOP100榜单发布&#xff0c;中国医疗机构在其中的表现尤为引人注目。 根据《自然》杂志网站发布的数据&#xff0c;此次公布的排名是基于&#xff08;2023年3月1日至2024年2月29日&#xff09;的统计数据&#xff0c;全球医疗机构…

【购物车案例】for循环为什么使用key

要做出一个简单的购物车界面。首先&#xff0c;有一个复选框&#xff0c;可以选择商品&#xff0c;后面紧跟的是商品名称&#xff0c;然后&#xff0c;是删除按钮&#xff0c;根据这个需求&#xff0c;先写出一个简单的界面&#xff0c;代码如下&#xff1a; <template>…

elasticSearch的索引库文档的增删改查

我们都知道&#xff0c;elasticsearch在进行搜索引擎的工作时&#xff0c;是会先把数据库中的信息存储一份到elasticsearch中&#xff0c;再去分词查询等之后的工作的。 elasticsearch中的文档数据会被序列化为json格式后存储在elasticsearch中。elasticsearch会对存储的数据进…

诺基亚老年机突然翻红,为了情怀你会入手吗?

在智能手机功能日益丰富的今天&#xff0c;诺基亚3210的回归&#xff0c;似乎为人们提供了一种逃离现代科技束缚的选项。这款曾经的经典手机&#xff0c;以其复古的外观和简单的功能&#xff0c;吸引了一批怀旧用户的追捧。然而&#xff0c;它真的能够满足现代人的需求吗&#…

探讨大数据在视频汇聚平台LntonCVS国标GB28181协议中的应用

随着摄像头和视频监控系统的普及和数字化程度的提高&#xff0c;视频监控系统产生的数据量急剧增加。大数据技术因其优秀的数据管理、分析和利用能力&#xff0c;成为提升视频监控系统效能和价值的重要工具。 大数据技术可以将视频监控数据与其他数据源进行融合分析&#xff0c…

【Golang】slice切片

slice Go语言的切片是对数组的抽象。 数组的使用 package mainimport ("fmt" )// 传递固定长度的数组还是值传递的方式 func printArray(myArray [5]int) {for index, value : range myArray {fmt.Println("index:", index, "value:", value)…

【深度学习】图形模型基础(5):线性回归模型第五部分:多变量线性回归模型

1.引言 当我们从基础的线性模型 y a b x error y a bx \text{error} yabxerror 转向更复杂的模型 y β 0 β 1 x 1 β 2 x 2 … error y \beta_0 \beta_1 x_1 \beta_2 x_2 \ldots \text{error} yβ0​β1​x1​β2​x2​…error 时&#xff0c;我们面临了诸多…

DNS知识点

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 ​ 目录 一、DNS概念 二hosts 文件 DNS优缺点 三客户端域名解析顺序(优先级) 四原…

JVM:类的生命周期

文章目录 一、介绍二、加载阶段三、连接阶段四、初始化阶段 一、介绍 类的生命周期描述了一个类加载、连接&#xff08;验证、准备和解析&#xff09;、初始化、使用、卸载的整个过程。 加载&#xff08;Loading&#xff09;阶段第一步是类加载器根据类的权限定名通过不同的渠…

函数调用的堆栈过程

初始栈空间如下(可以拿来训练)&#xff1a; 代码执行之后&#xff1a; 代码&#xff1a; #include <iostream> int sum(int a, int b) { /* 00601800 push ebp 00601801 mov ebp,esp 006018A7 sub esp,4Ch 006018A7 reo stos */int temp …

CentOS7二进制安装和YUM安装mongodb,服务器无法安装5.0以上的 mongodb 数据库报错 Illegal instruction

文章目录 MongoDB 安装二进制安装YUM 安装 Tips:1、MongoDB安装问题2、MongoDB登录3、MongoDB排序时内存大小限制和创建索引4、创建用户5、Java yaml使用密码连接mongodb6、MongoDB增删改查 MongoDB 安装 二进制安装 [rootmysql5-7 mongodb-6.0.4]# cat start.sh #!/bin/bash…

【ASSEHR出版】第四届现代教育技术与社会科学国际学术会议(ICMETSS 2024)

第四届现代教育技术与社会科学国际学术会议&#xff08;ICMETSS 2024&#xff09;将于2024年8月23-25日在马来西亚 吉隆坡举行。 会议旨在为从事教育相关领域的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术&#xff0c;了解学术发展趋势&#xff0c;拓…