手机端怎么实现拖动元素效果?

发布于 2022-09-01 12:08:57 字数 52 浏览 20 评论 0

好像是需要用到touchmove事件,可否贴出代码来参考一下,或者比较好用的插件,谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

戏剧牡丹亭 2022-09-08 12:08:57

你可以查看jQuery UI Touch Punch, 你会为之惊叹的。
看这个:http://touchpunch.furf.com/

过期情话 2022-09-08 12:08:57

这个元素给absolute
外层父元素relative
然后加上touchmove事件,代码很简单啊

七堇年 2022-09-08 12:08:57

我建议自己写,移动端主要是 通过 touchstart 、touchmove、和 touchend来实现拖动效果。

可以写这样一段小小的代码 :

var ele = document.getElementById("drag");

var moving = function(e){
/.......

}
var mouseup = function(e){
/.......

document.removeEventListener("touchmove", moving);
document.removeEventListener("touchend", mouseup);

}

ele.addEventListener("touchstart",function(e){

event.preventDefault();
item.set_prop("isMoving", true);
document.addEventListener("touchmove", moving,false);
document.addEventListener("touchend", mouseup,false);

},false);

注意点:
1.必须在拖动出发的时候禁用屏幕滚动和缩放,比如 上面的event.preventDefault();
2.必须在拖动完成之后remove 之前注册的事件。

请叫我最亚伦。。哈哈

我是有多爱你 2022-09-08 12:08:57

hammerjs这个库中提供了拖动元素的事件,可以试试。

不即不离 2022-09-08 12:08:57

function dropImg(obj){

    $(obj).on('touchstart',function(event){
        var disx=event.originalEvent.changedTouches[0].clientX-$(obj).offset().left;
        var disy=event.originalEvent.changedTouches[0].clientY-$(obj).offset().top;
        var moveFlag=true;
        $(document).on('touchmove',function(event){
            event.preventDefault();
            if(moveFlag){
                $(obj).css({
                    "left":event.originalEvent.changedTouches[0].clientX - disx,
                    "top":event.originalEvent.changedTouches[0].clientY - disy
                });
            }
        });
        $(document).on('touchend',function(){
            moveFlag=false;
        })
    });
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文