js带有虚线框的拖动效果代码实例

拖拽模块到输入框 点击选中字段的拖拽到对应的输入框中 立即下载

分享一段代码实例,它实现了元素拖动效果。

在拖动的时候具有一个虚线框在移动,当松开鼠标虚线框消失,原来的元素会被放置于此。

代码实例如下:

[HTML] 纯文本查看 复制代码运行代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>带有虚线框的拖动效果</title>
<style>
* {
  padding: 0;
  margin: 0;
}
#box1 {
  width: 100px;
  height: 100px;
  text-align:center;
  line-height:100px;
  background: yellow;
  position: absolute;
  cursor: move;
}
#box2 {
  width: 100px;
  height: 100px;
  border: 1px dashed #000000;
  position: absolute;
  cursor: move;
}
</style>
<script>
window.onload = function() {
  var box1 = document.getElementById("box1");
  box1.onmousedown = function(event) {
    var e = event || window.event;
    var disX = e.clientX - box1.offsetLeft;
    var disY = e.clientY - box1.offsetTop;
    var maxL = document.documentElement.clientWidth - box1.offsetWidth;
    var maxT = document.documentElement.clientHeight - box1.offsetHeight;
    //创建一个新的div
    var box2 = document.createElement("div");
    box2.id = "box2";
    box2.style.left = box1.offsetLeft + "px";
    box2.style.top = box1.offsetTop + "px";
    document.documentElement.appendChild(box2);
    document.onmousemove = function (event) {
      var e = event || window.event;
      var l = e.clientX - disX;
      var t = e.clientY - disY;
      if (l <= 0) {
        l = 0;
      }
      if (t <= 0) {
        t = 0;
      }
      if (l >= maxL) {
        l = maxL;
      }
      if (t >= maxT) {
        t = maxT
      }
      box2.style.left = l + "px";
      box2.style.top = t + "px";
    };
    box2.onmouseup = function() {
      box1.style.left = box2.style.left;
      box1.style.top = box2.style.top;
      document.documentElement.removeChild(box2);
      box2.onmousemove = null;
      box2.onmouseup = null;
    };
  }
}
</script>
</head>
<body>
<div id="box1">拖动块</div>
</body>
</html>

上面的代码实现了我们的要求,下面介绍一下它的实现过程。

一.代码注释:

(1).window.onload = function() {},文档内容完全加载完毕再去执行函数中的代码。

(2).var box1 = document.getElementById("box1"),获取id属性值为box1的元素对象。

(3).box1.onmousedown = function(event) {},为box1元素注册onmousedown事件处理函数。

(4).var e = event || window.event,兼容所有浏览器的时间对象。

(5).var disX = e.clientX - box1.offsetLeft,获取当前鼠标指针距离元素左侧的距离。

(6).var disY = e.clientY - box1.offsetTop,获取当前鼠标指针距离元素上侧的距离。(7).var maxL = document.documentElement.clientWidth - box1.offsetWidth,元素可以向右拖动的最大值。

(8).var maxT = document.documentElement.clientHeight - box1.offsetHeight,元素可以向上拖动的最大值。

(9).var box2 = document.createElement("div"),创建虚线框div元素。

(10). box2.id = "box2",设置虚线框div元素的id属性值。

(11).box2.style.left = box1.offsetLeft + "px",设置box2元素的left属性值

(12).box2.style.top = box1.offsetTop + "px",设置box2的top属性值。

(13). document.documentElement.appendChild(box2),将此box2添加的页面。

(14).document.onmousemove = function (event) {

  var e = event || window.event;

  var l = e.clientX - disX;

  var t = e.clientY - disY;

  if (l <= 0) {

    l = 0;

  }

  if (t <= 0) {

    t = 0;

  }

  if (l >= maxL) {

    l = maxL;

  }

  if (t >= maxT) {

    t = maxT

  }

  box2.style.left = l + "px";

  box2.style.top = t + "px";

},将box2元素的可以拖动范围限定在浏览器客户区。

之所以将onmousemove 事件处理函数注册在document上是为了防止快速拖动导致鼠标脱离元素,失去拖动效果。

(15).box2.onmouseup = function() {

  box1.style.left = box2.style.left;

  box1.style.top = box2.style.top;

  document.documentElement.removeChild(box2);

  box2.onmousemove = null;

  box2.onmouseup = null;

},当鼠标松开的时候,将box1的位置设置为当前box2的位置。

然后删除box2,并解绑事件处理函数。

ichart.js绘制虚线、平均分虚线效果的实现代码 ichart.js绘制虚线、平均分虚线效果的实现代码 var Data=new Array(); Data[0] = { labels : ["第一单元","第二单元","第三单元","第四单元","第五单元"], datasets : [ { name : '优秀率', color:'#1dbcfe', line_width:4, value : [80,75,92,62,0] } ] } Data[1] = { 立即下载

相关推荐

radsystems的激活(破解)和使用

上个文章讲述了radsystems的下载,但是只有30天的免费使用权,这篇文章将会讲解如何破解激活radsystems。注意:如果不想去官网下载的话,点击安装包的exe文件。不要急,打开我给你们的安装包,点击crack。如果提示done则完成(我的是激活过的)注意:这是8.7版本的。点击generate。

weixin_65144487的博客 3529

用js打造类windows的虚线拖拽框

没事无聊,突然发现在windows下面一个很平常的细节,而在ie上没有,现在ria大行其道,很多web应用都在积极的效仿类windows的桌面效果,ext.dojo等等js类库中间都有很多绚丽的widget,很多人都认为js是一门玩具语言,很大一部分原因是他的语言的自由,不同的程序员能写出不同的风格,还有就是js没有属于自己的图形类库(canvas至少没有普及和成熟),要画图,我们需要采用ad

浮白 2866

RV1106的ISP配置实战:MIPI与LVDS接口的硬件连接与设备树优化

本文详细解析了RV1106芯片的ISP配置实战,重点对比了MIPI CSI-2与LVDS两种主流接口的硬件连接方案与数据流差异。通过手把手的设备树代码示例,深入讲解了单路MIPI与双路LVDS摄像头的配置要点、关键属性设置及常见避坑指南,并提供了从驱动加载检查到Media Controller工具使用的系统化调试方法,帮助开发者快速打通图像采集与处理全链路。

terraform7cloud的博客 472

js鼠标十字虚线效果

js鼠标十字虚线效果

盛世芳华 712

Unity坦克物理系统:履带驱动与力场建模实战指南

在游戏物理仿真中,履带车辆的运动建模远超传统轮式控制器的范畴。其核心在于摒弃WheelCollider的滚动幻觉,转向基于牛顿力学的力与力矩协同求解——通过主推进力场、转向力矩场和地面反作用力场三重叠加,实现对质量、摩擦、惯性及坡度阻力的真实响应。这种建模方式不仅支撑坦克爬坡、陷泥、侧倾等复杂行为,更保障了多人同步与高帧率下的物理稳定性。Physics Tank Maker 正是这一思路的工业级落地,它将PhysX底层机制与坦克动力学深度耦合,提供可调参数、事件驱动视觉反馈及标准扩展接口,成为面向严肃模拟类

weixin_29535577的博客 562

极路由 极1s J1S hc5661 刷padavan固件

极路由1S刷机指南 准备工作: 下载Breed不死固件 通过WinSCP上传或直接wget获取 执行mtd命令写入Breed 关键步骤: 进入Breed控制台(按住Reset键开机) 备份原厂固件和密钥 下载Padavan固件(RT-N14U-GPIO-12-xiaodu-ji1S-128M.trx) 刷机过程: 在Breed控制台更新固件 等待自动重启完成 初始设置: 管理地址:192.168.123.1 默认账号:admin/admin 无线名称:PCDN 无线密码:1234567890 注意事项:切勿

SimonLiu的博客 1303

快速上手用JS实现元素的拖动与占位

这篇博客,是博主这几天刚做的一个项目遇到的一个难点,学会了这个,你就能轻松实现页面元素的移动啦,再配合一些条件,就可以做出一个任务完成进度的页面了! 先来看看效果: 实现功能: 拖动元素从一个板块移动到另一个板块的某个位置,博主根据自己的需求做的这个是点击的元素 只能移动到它所在模块的下一个模块,如果移动到别的模块就会回到原来位置,而且当你拖动的 元素位置没有超过某个距离也会自动弹回到原来位置 案例分析: 关键一步就在于!当你鼠标按下的时候,不仅要获取到当前的元...

可爱不能当饭吃 4674

GitHub与GitLab中的Fork操作:从个人仓库到团队协作的完整指南

本文详细介绍了GitHub与GitLab中的Fork操作,从个人仓库到团队协作的完整指南。通过Fork操作,开发者可以在权限隔离的环境下自由实验,并通过合并请求机制保证代码质量。文章涵盖了Fork的具体步骤、本地开发环境配置、代码同步方法以及高级协作技巧,帮助团队高效管理代码仓库。

weixin_28829325的博客 306

鼠标事件-拖拽5(带虚线框的拖拽)

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style> #div2 { width: 150px; height: 150px; position: absolute; background: #CCCCCC; } .box{ border: 1px dashed black;

u011927449的博客 694

VMware虚拟机安装MS-DOS 7.10教程

dos安装教程dos版本7.10附下载链接。

Minecraft_xiaole的博客 1万+

RK3568平台(内存篇)DDR定频修改

如果需要DDR定频,则还需要注释掉其他多余的DDR频率,保留一个即可,例如注释掉opp-528000000、opp-1068000000、opp-1560000000,保留opp-2750000000则是定频最大频率。如果回退必须将 dmc_opp_table节点 的其他频率打开,否则系统无法选择到其他频率运行。ddr频点不对,先把ddr变频关掉,关闭后系统就不会一直重启了,以下是修改DDR频点的。rk3588修改定频节点在rk3588s.dtsi 的 dmc: dmc。

weixin_49303682的博客 1623

java 鼠标拖动矩形_拖动鼠标画虚线矩形

拖动鼠标画虚线矩形如题!就象windows那样,虚线随着鼠标拖动改变大小!!急!希望大家帮帮忙!----------------解决方案--------------------------------------------------------JS应该好实现----------------解决方案-------------------------------------------------...

weixin_42130889的博客 255

深度解析:Android开发工程师(嵌入式系统方向)职位 - 技术需求、面试准备与发展路径

本文深入分析了嵌入式Android开发工程师的岗位要求和技术内涵。该职位需要掌握C/C++、Linux系统编程、硬件接口等核心技术,能够进行Android系统底层定制开发,包括HAL层实现、Framework修改、性能优化等工作。文章详细解读了岗位职责,梳理了必备技术栈,提供了针对性的面试问题与参考答案,并探讨了职业发展路径。这类岗位要求开发者兼具软件工程能力和硬件基础知识,适合在智能电视、机顶盒、车载系统等嵌入式领域发展的技术人员。

郑伟强dev的专栏 135

js实现带框拖拽

带框拖拽 目录 代码实例 代码解析 下载源码链接 代码实例 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;带框拖拽&lt;/title&gt; &lt;style type="text/css"&gt; .div1{ width:400px; height: 400px;

失心疯的博客 2899

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JavaScript鼠标拖动+自动吸附实例

JavaScript鼠标拖动+自动吸附实例 学了几天的JavaScript,自己动手做了一个简单的鼠标拖动的实例,拖动过程中科自动检测与目标容器的距离,在一定的距离范围内可以自动将被拖动的元素加入到目标容器中,希望对开始学习javascript的童鞋有用…… 先看看效果图(Chrome、FireFox、Opera、Safari测试通过): 效果图(虚线框:目标对象 蓝色填...

abcd3699的博客 1108

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

使用一条带箭头的虚线连接两个div,并且div拖拽时保持虚线连接

本文介绍了使用SVG实现div之间带箭头虚线连接的方法。首先讲解了SVG path命令(M,L,H,V,C)绘制直线和曲线,通过stroke-dasharray属性创建虚线效果。然后详细说明了marker属性实现箭头的配置方法,包括markerWidth/Height、refX/refY等参数。接着介绍了鼠标坐标(clientX/Y,screenX/Y,offsetX/Y)的差异,以及实现div拖动的步骤。最后展示了如何动态更新path路径,使连接线始终保持在两个div的中心位置,并根据div相对位置自动调

Destinynever的博客 5177

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python 输入框拖动随意摆放_用JQUERY实现的可拖动左右摆放,随意移动位置的图层特...

用JQUERY实现的仿Google首页拖动特效#div_width{width:98%;margin:0 auto;}*{margin:0px;padding:0px;}#div_left,#div_right,#div_center{float:left;width:28%;height:900px;margin:0 3px;}#div_center{width:38%;}.can_move{b...

weixin_39593498的博客 124

DIV层拖动的JavaScript

    无刷新添加一个新的DIV层,并可实现的该层的拖动,鼠标拖动层可移动位置,将JS部分另存为一个新文件,用到的时候从外部引入,这个拖动层代码很流行,Google和YAHOO等大网站经常可以看到这种效果。    <!--body {margin:0px;padding:0px;font-size:12px;text-align:center;}body > div {te

我的收藏 726

html5 canvas 虚线,HTML5 canvas画带箭头的虚线

HTML5 canvas画带箭头的虚线发布时间:2017-03-24 20:36来源:互联网当前栏目:网页设计教程本案例注意事项:1、当你拖动箭头时 canvas里面线条绘制自动重新计算点。2、canvas没有画虚线的api,因为对api不是很熟悉,所以就不献丑了,在网上找的。3、箭头出来后 点击画布里面的任意点 箭头将延伸到该处,至于具体的应用 修改canvas的lineTo属性就能实现了。4、...

weixin_39725403的博客 365

等虚线框的拖拽

<!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"><title></title><style>.box{border: 3px solid yellow; position: absolute;}#div1{width: 100px; h...

djrk76507的博客 226

原生JS快速实现拖放实例效果与解析

放是很常见的一种交互效果,很多时候我们都会借助于第三方的控件来实现,其实用原生js实现起来也非常的方便。接下来我们就用原生js和css快速实现这样的拖放效果: HTML HTML的内容很简单,就是五个空的容器和一个可以被拖拽的元素: html代码: <body> <div class="droppable"> <div class="draggable...

weixin_46400072的博客 205

连接两个div的直线,拖动时保持连线。

效果:连接两个div带箭头的虚线,拖动div时保持线条实时改变位置保持始终连接 效果图: 1.产品经理提出的需求 用带箭头的虚线将两个位置不固定的div连接起来,初听到这个需求一头雾水,传统的div可以做直线,但斜起来不太好做,幸亏之前接触过svg,里面有一个line标签,知道起始中止两个点的位置,就可以将两个点连接起来了。 至于箭头,...

weixin_34224941的博客 5876

可拖动排序DIV

JavaScript实现的可以拖动排版可以关闭的DIV层丨芯晴网页特效丨CsrCode.Cnbody {margin:0px;padding:0px;font-size:12px;text-align:center;}body > div {text-align:center; margin-right:auto; margin-left:auto;} .content{width:900px;}

暗淡亮点的博客 858

JavaScript,自己动手做了一个简单的鼠标拖动的实例

学了几天的JavaScript,自己动手做了一个简单的鼠标拖动的实例,拖动过程中科自动检测与目标容器的距离,在一定的距离范围内可以自动将被拖动的元素加入到目标容器中,希望对开始学习javascript的童鞋有用…… 先看看效果图(Chrome、FireFox、Opera、Safari测试通过): 效果图(虚线框:目标对象    蓝色填充透明框:临时拖动对象   红色填充框:被拖

逆雪寒的天坑 702

可以拖动排版可以关闭的DIV层

JavaScript实现的可以拖动排版可以关闭的DIV层丨芯晴网页特效丨CsrCode.Cn             body {margin:0px;padding:0px;font-size:12px;text-align:center;}     body > div {text-align:center; margin-right:auto; margin-left:auto;

960

如何在Vue.js中实现实时视频裁剪功能

今天客户在TRTC功能里面提出新需求,只想要展示选中范围内画面发布到房间中,结合TRTC有一个自定义分享视频源里面也支持分享canvas画面,故有本次功能实现,在本文章中,我将带你一步步实现一个在Vue.js中自动裁剪视频区域并显示在Canvas中的功能。这个功能允许你使用拖拽和调整大小的虚线框选择视频的一部分,并且实时显示该部分视频的内容。这种实时的更新效果是通过使用。

qq_15396485的博客 3409
上一篇: HTML5 localStorage使用演示代码实例---------评论
下一篇: jQuery和css3实现的摩天轮旋转效果
Return_KB
博客等级 码龄9年 23粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值