首页 > 其他分享 >手机浏览器中实现可拖动div

手机浏览器中实现可拖动div

时间:2023-11-04 17:33:36浏览次数:33  
标签:浏览器 拖动 touch window newTop var div newLeft

var touchStartX = 0;
var touchStartY = 0;
var moveX = 0;
var moveY = 0;

var div = document.getElementById('yourDivId'); // 获取你要拖动的div

div.addEventListener('touchstart', function(e) {
    var touch = e.touches[0]; // 获取第一个触点
    touchStartX = touch.pageX; // 记录触点初始位置
    touchStartY = touch.pageY;
});

div.addEventListener('touchmove', function(e) {
    e.preventDefault(); // 阻止默认行为
    var touch = e.touches[0]; // 获取第一个触点

    moveX = touch.pageX - touchStartX; // 计算移动距离
    moveY = touch.pageY - touchStartY;

    var newLeft = div.offsetLeft + moveX;
    var newTop = div.offsetTop + moveY;

    // 边界检查
    if (newLeft < 0) newLeft = 0;
    if (newTop < 0) newTop = 0;
    if (newLeft + div.offsetWidth > window.innerWidth) newLeft = window.innerWidth - div.offsetWidth;
    if (newTop + div.offsetHeight > window.innerHeight) newTop = window.innerHeight - div.offsetHeight;

    div.style.left = newLeft + 'px'; // 更新div位置
    div.style.top = newTop + 'px';

    touchStartX = touch.pageX; // 更新触点位置,以便下次计算
    touchStartY = touch.pageY;
});

div.addEventListener('touchend', function(e) {
    // 可以在这里添加你在结束拖动后需要执行的代码
});

 

标签:浏览器,拖动,touch,window,newTop,var,div,newLeft
From: https://www.cnblogs.com/nanfei/p/17809590.html

相关文章

  • 电脑怎么取消默认浏览器
    如何取消默认浏览器设置1、取消浏览器默认设置的步骤是:打开浏览器,点击右上角的菜单,进入“选项”;在“基本设置”中,取消勾选“启动时检查是否为默认浏览器”。2、首先点击“开始”菜单,找到“控制面板”,并点击打开。其次在控制面板中,你需要找到“默认程序”选项。它可能被放在页面......
  • Educational Codeforces Round 157 (Rated for Div. 2)
    A.TreasureChest分类讨论一下,只有两种情况。走到钥匙处,然后走到箱子处走到箱子处,移动箱子,走到钥匙处,走回箱子处对于第二种情况可以直接枚举箱子被移动到的位置#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongusingvi=vector<int>;usingpi......
  • Educational Codeforces Round 157 (Rated for Div. 2) D. XOR Construction
    题目链接题意给你\(n-1\)个整数\(a_1,a_2,\dots,a_{n-1}\)。你的任务是构造一个数组\(b_1,b_2,\dots,b_n\),使得:从\(0\)到\(n-1\)的每个整数都在\(b\)中出现一次;对于从\(1\)到\(n-1\)的每个\(i\),\(b_i\oplusb_{i+1}=a_i\)(其中\(\oplus\)表示......
  • 从零实现的浏览器Web脚本
    从零实现的浏览器Web脚本在之前我们介绍了从零实现Chrome扩展,而实际上浏览器级别的扩展整体架构非常复杂,尽管当前有统一规范但不同浏览器的具体实现不尽相同,并且成为开发者并上架Chrome应用商店需要支付5$的注册费,如果我们只是希望在Web页面中进行一些轻量级的脚本编写,使用浏览器......
  • Nuxt-监听浏览器返回
    区分普通页面/keep-alive缓存页面1、普通页面mounted:{this.setAddListener()},destroyed(){window.removeEventListener('popstate',this.setBack,false)},methods:{//监听浏览器返回操作setAddListener(){consthasRefresh......
  • firfox浏览器访问内网异常处理记录
    firfox远程访问内网,出现PR_END_OF_FILE_ERROR可能原因1vpn或代理问题造成的,可能是这个软件的客户端加密方法选择的和服务端不一致导致的2 所访问的网站需要证书,通过认证后才可以访问网站。证书管理中,导入相应的证书即可3 电脑时钟不正确解决方式1浏览器的网络连接中设置,哪些......
  • Chrome浏览器已开启自动保存密码,但仍无法自动保存密码的解决办法
     解决方案:打开chrome浏览器的安装目录..\GooglelChromelUserData\Default删除LoginData,LoginData-journal两个文件windows路径可以尝试找:C:\Users\Administrator\AppData\Local\Google\Chrome\UserData\Default重启浏览器,即可原文地址......
  • Codeforces Round 906 (Div. 2) Doremy's Drying Plan E1.&E2
    传送门先考虑\(E1\)只需要删除两条线使得不被覆盖的点数最多。观察到点数只有\(200000\)那么我们完全可以先将被至少\(3\)条线覆盖的点删掉。考虑枚举一条线,枚举这条线覆盖的点寻找另外一条线覆盖这些点中的最大值,然后再找没覆盖这些点之外的线的最大值即可。复杂度容易证明......
  • Educational Codeforces Round 134 (Div.2) D 题解
    题目链接D.MaximumAND题目大意给定两组序列\(a\)\(b\),长度为\(n\),现有一新序列\(c\),长度也为\(n\)。其中,\(c_i=a_i\oplusb_i\)。定义\(f(a,b)=c_1\&c_2\&……\&c_n\)。现在你可以随意编排\(b\)序列的顺序,求\(f(a,b)\)的最大值。思路以下位运算均是......
  • Educational Codeforces Round 128 (Rated for Div. 2)
    添加链接描述C题显然二分0的数量,然后双指针,算一下前缀和后缀1的数量即可。#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<map>#include<vector>#include<set>#defineAputs("YES")#defineBputs("NO&q......