让你的div可拖动(手机端)

电脑端引入 jQuery UI 可以实现。而手机并没有 mousemove 等事件,所以这里采用手机事件:touchstart 和 touchmove 实现拖拽。

一、引入:

只要引入 jQuery.js 和 dragger.js(如下)即可

注:实现拖拽部分转自:https://blog.csdn.net/qq_39958629/article/details/90441003

dragger.js:

window.dragger_settings = Array();
// 使用该类前 均可以修改这些属性
dragger_settings['contentWidth'] = '100%';         //默认为全屏移动,设置长款以限制移动范围
dragger_settings['contentHeight'] = '100%';
dragger_settings['box_sizing'] = 'border-box';      //清楚的看到可移动范围
dragger_settings['border'] = '1px solid red';
dragger_settings['padding_top'] = '20px';           //移动范围内边距
dragger_settings['padding_bottom'] = '20px';
dragger_settings['padding_left'] = '20px';
dragger_settings['padding_right'] = '20px';
dragger_settings['contentPosition'] = 'absolute';
dragger_settings['contentTop'] = '20px';            //默认位置
dragger_settings['contentLeft'] = '20px';dragger_settings['commentWidth'] = '';              // 盒子承载的大小,设置为百分比会出错
dragger_settings['commentHeight'] = '';
dragger_settings['overflow'] = 'visible';            //这里不支持设置为hidden,会限制盒子内部东西的显示;
dragger_settings['commentPosition'] = 'absolute';
dragger_settings['commentTop'] = '20px';            //默认位置
dragger_settings['commentLeft'] = '20px';// 赋予css属性
$(function () {$(".draggerContents").css({/*默认为全屏移动,设置长款以限制*/"width": dragger_settings.contentWidth,"height": dragger_settings.contentHeight,/*清楚的看到可移动范围*/"box-sizing": dragger_settings.box_sizing,"border": dragger_settings.border,/*移动范围内边距*/"padding-top": dragger_settings.padding_top,"padding-bottom": dragger_settings.padding_bottom,"padding-left": dragger_settings.padding_left,"padding-right": dragger_settings.padding_right,"position": dragger_settings.contentPosition,/*默认位置*/"top": dragger_settings.contentTop,"left": dragger_settings.contentLeft,});$(".draggerComments").css({"width": dragger_settings.commentWidth,"height": dragger_settings.commentHeight,"overflow":dragger_settings.overflow,"position": dragger_settings.commentPosition,/*默认位置*/"top": dragger_settings.commentTop,"left": dragger_settings.commentLeft,});
});
// 实现拖拽
$(function () {var startX, startY, sX, sY, moveX, moveY;var contW = $(".draggerComments").width();var contH = $(".draggerComments").height();var winH = $(".draggerContents").height();var winW = $(".draggerContents").width();var paddtop = parseInt($(".draggerContents").css("padding-top"));var paddbottom = parseInt($(".draggerContents").css("padding-bottom"));var paddleft = parseInt($(".draggerContents").css("padding-left"));var paddright = parseInt($(".draggerContents").css("padding-right"));$(".draggerComments").on({ //绑定事件touchstart: function (e) {startX = e.originalEvent.targetTouches[0].pageX; //获取点击点的X坐标startY = e.originalEvent.targetTouches[0].pageY; //获取点击点的Y坐标sX = $(this).offset().left; //相对于当前窗口X轴的偏移量sY = $(this).offset().top; //相对于当前窗口Y轴的偏移量leftX = startX - sX; //鼠标所能移动的最左端是当前鼠标距div左边距的位置rightX = winW - contW + leftX; //鼠标所能移动的最右端是当前窗口距离减去鼠标距div最右端位置topY = startY - sY; //鼠标所能移动最上端是当前鼠标距div上边距的位置bottomY = winH - contH + topY; //鼠标所能移动最下端是当前窗口距离减去鼠标距div最下端位置},touchmove: function (e) {e.preventDefault();//移动过程中XY轴的坐标要减去margin的距离moveX = e.originalEvent.targetTouches[0].pageX; //移动过程中X轴的坐标moveY = e.originalEvent.targetTouches[0].pageY; //移动过程中Y轴的坐标//判断的时候要计算加上padding的距离if (moveX < leftX + paddleft) {moveX = leftX + paddleft;}if (moveX > rightX + paddright) {moveX = rightX + paddright;}if (moveY < topY + paddtop) {moveY = topY + paddtop;}if (moveY > bottomY + paddbottom) {moveY = bottomY + paddbottom;}$(this).css({"left": moveX + sX - startX,"top": moveY + sY - startY,});},})
});

二、实现:

设置某些属性(dragger.js的配置部分 可略过)

<script>// 使用该类前 均可以修改这些属性,可修改属性:// 移动范围:dragger_settings['contentWidth'] = '100%';         //默认为全屏移动,设置长款以限制移动范围dragger_settings['contentHeight'] = '100%';dragger_settings['box_sizing'] = 'border-box';      //清楚的看到可移动范围dragger_settings['border'] = '1px solid red';       //如果不需要范围框架可将border宽度设置为0dragger_settings['padding_top'] = '20px';           //移动范围内边距dragger_settings['padding_bottom'] = '20px';dragger_settings['padding_left'] = '20px';dragger_settings['padding_right'] = '20px';dragger_settings['contentPosition'] = 'absolute';dragger_settings['contentTop'] = '0';            //默认位置dragger_settings['contentLeft'] = '0';// 承载盒子dragger_settings['commentWidth'] = '';              // 盒子承载的大小,设置为百分比会出错dragger_settings['commentHeight'] = '';dragger_settings['overflow'] = 'visible';            //这里不支持设置为hidden,会限制盒子内部东西的显示;dragger_settings['commentPosition'] = 'absolute';dragger_settings['commentTop'] = '0';            //默认位置dragger_settings['commentLeft'] = '0';
</script>

关键 html 代码(仅仅三行)

<!--draggerContents:移动范围。draggerComments:承载容器。-->
<div class="draggerContents"><div class="draggerComments"><!--这里写可拖拽div--><div style="width: 200px;height: 200px;background-color: yellow"></div></div>
</div>

实现后记得点赞和关注哦,有疑问欢迎留言

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

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

相关文章

5-4 全局变量

1、函数内部使用全局变量时&#xff0c;需要申明global 1 name 小明 # 定义一个全局变量name,并给它赋值小明2 stus [] # 定义一个空list3 # list、字典、集合4 5 def a():6 # 字符串、int、float、元组 需要声明global7 global name # 函数内部使用局部变量时&a…

黑客攻防:从入门到入狱_每日新闻摘要:游戏服务黑客被判入狱27个月

黑客攻防:从入门到入狱On Christmas day, 2013, many delighted people opened up new Xbox and Playstation gifts. That excitement turned to disappointment when they were unable to log onto game services and play. Now the hacker responsible will spend 27 months …

Self Introduction

名流时尚服饰 dior 夏季 男装 男士t恤衬衫卫衣休闲裤牛仔裤英伦 socool 搜酷女包◆任选两款正价包包邮◆5周年店庆◆5折疯抢 紫紫 超人气包邮特价创意家居收纳压缩袋饰品服饰配件包包 socool 搜酷女包◆任选两款正价包包邮◆5周年店庆◆5折疯抢 dior 风格 CF Homme 男装 男士t恤…

爬虫notes

‘’’ 爬取思路&#xff1a; 1、requests&#xff08;url&#xff09; 2、requests json 3、requests XPath 4、requests BeautifulSoup 5、selenium 6、scrapy框架 7、scrapy-redis 及分布式 OS&#xff1a; import os os.system(“C: && p.txt”) os.system(“p…

Android 电量优化

Android系统上App的电量消耗主要由cpu、wakelock、数据传输&#xff08;流量和wifi&#xff09;、wifi运行、gps、other senior组成&#xff0c;而耗电异常也是由于这几个模块的使用不当。 BroaddcastReceiver 为了减少应用损耗的电量,代码中需要尽量避免无用的操作代码的执行 …

如何下载手机的App Store中不再存在的应用程序

Smartphone app stores are well established at this point, and as much as we love to see new apps become available, that also means the inevitable: sometimes apps go away. Here’s what you can do if your favorites disappear. 在这一点上&#xff0c;智能手机应…

Q_learning简介与实例

1、算法思想 QLearning是强化学习算法中value-based的算法&#xff0c;Q即为在某一环境下&#xff0c;Q&#xff08;state,action&#xff09;在某一时刻的 s 状态下(s∈S)&#xff0c;采取 动作a (a∈A)动作能够获得收益的期望&#xff0c;环境会根据agent的动作反馈相应的回…

吴颖二:12.27 午评 地缘政治一波未平一波又起,千三可到?

前言&#xff1a;圣诞节后首个交易日&#xff0c;金银油均走出了大行情。美国因导弹项目制裁朝鲜两名官员&#xff0c;地缘局势再升温黄金本周能否突破1300关口&#xff1f;油价刷新两年半高位后&#xff0c;一个重要指标却已暗示短期内或面临风险…… 朝鲜局势进一步恶化的同时…

2-1 gradle安装

因为Gradle是基于JVM的&#xff0c;所以一定要确保本机已经安装了JDK&#xff0c;我们可以通过java -version来验证一下是否已经安装了JDK。 bin目录里面是两个可执行文件&#xff0c;一个是Windows下面的可执行文件&#xff0c;还有一个就是类Unix文件系统的可执行文件。所有的…

Django中session和cookie简单的使用

一、简单的理解 session和cookie是request下的两个对象&#xff0c;操作他们的值就是在操作字典&#xff0c;设置他们的属性就是调用方法。 会话&#xff08;Session&#xff09;跟踪是Web程序中常用的技术&#xff0c;用来跟踪用户的整个会话。Web应用程序是使用HTTP协议传输…

摄影中的曝光补偿是什么?

When you use your camera in some automatic modes like Program—or one of the semi-manual modes like Aperture Priority or Shutter Speed Priority—you don’t give up total control over everything: you can still control the exposure using exposure compensatio…

ajax回调打开新窗体防止浏览器拦截方法

2019独角兽企业重金招聘Python工程师标准>>> 问题剖析&#xff1a; function click_fun(){ window.open("www.baidu.com");//能打开 $.ajax({ url: ${pageContext.request.contextPath}/activity/savePrizes.htm, type: post, dataType: json, data: data…

ES6学习--对象属性的遍历

ES6一共有5种方法可以遍历对象的属性。 &#xff08;1&#xff09;for...in for...in循环遍历对象自身的和继承的可枚举属性&#xff08;不含Symbol属性&#xff09;。 &#xff08;2&#xff09;Object.keys(obj) Object.keys返回一个数组&#xff0c;包括对象自身的&#xff…

多点认证wi-fi_准备使用Wi-Fi 6:认证将于2019年第三季度启动

多点认证wi-fiThe Wi-Fi Alliance already announced Wi-Fi 6 back in October. Today, it’s announcing the details of the Wi-Fi 6 certification process, which will launch in the third quarter of 2019. Expect many new Wi-Fi 6 devices later this year. Wi-Fi联盟已…

jQuery初识和常用事件(一)

文章目录一、jQuery二、入口函数三、选择器选择器小结 ★全部选择器参考 ☆四、常用的 jQuery 事件方法事件写法鼠标事件元素事件键盘事件文档/窗口事件全部事件方法参考 ☆五、效果事件显示与隐藏&#xff1a;hide&#xff0c;show&#xff0c;toggle淡入和淡出&#xff1a;fa…

nginx内嵌变量

FORWARD:http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_core_module.html#variables ngx_http_core_module模块支持内嵌变量&#xff0c;变量名与Apache服务器对应。 首先&#xff0c;这些变量可以表示客户端的请求头字段&#xff0c;诸如$http_user_agent、$ht…

pdf文档遇到了共享冲突_如何将链接共享为PDF格式的Google文档链接

pdf文档遇到了共享冲突Using Google Docs is a great way to collaborate on and share documents. Sometimes, though, you want to provide somebody with a PDF instead of an editable document. Google Docs now lets you edit your sharing link to provide a PDF. Best …

Visual Studio 2019 preview中体验C# 8.0新语法

准备工作&#xff1a; Visual Studio 2019 Preview版本中并没有包含所有的C# 8.0的新功能&#xff0c;但目前也有一些可以试用了。在开始之前&#xff0c;需要进行入两项设置&#xff1a; 将Framework设置为.net core 3.0 将C#语法设置为8.0 也可以直接编辑.csproj文件&#x…

jQuery 对HTML的操作(二)

文章目录一、jQuery获取、设置HTML标签的内容和属性获得内容 - text()、html() 以及 val()获取属性 - attr()&#xff0c;prop()二、增删 HTML 的内容增加删除三、操作CSSaddClass 添加removeClass 删除toggleClass 切换css 获取与设置所有操作html、css方法参考 ☆四、操作元素…

roku能不能安装软件_如何在Roku中使用Google Assistant

roku能不能安装软件As more of our devices connect to each other, it’s always nice to know that different products from different companies work together. A Chromecast isn’t expensive, but being able to use your TV directly with Google Assistant is better.…