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

复制代码
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) {
    // 可以在这里添加你在结束拖动后需要执行的代码
});
复制代码

 

posted on   空明流光  阅读(72)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2022-11-04 FileNotFoundError: [WinError 3] 系统找不到指定的路径 general.pyc
2022-11-04 python 打包后运行提示 ModuleNotFoundError: No module named 'xxx'
2020-11-04 64位系统的下的32位和64位进程的自动转向问题
2019-11-04 visual studio 在windows远程调试 linux 程序 cout 输出乱码
2014-11-04 asp.net ajax 调用一例

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示