前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >touch实现js拖拽

touch实现js拖拽

作者头像
贵哥的编程之路
发布2020-10-30 10:42:43
5.5K0
发布2020-10-30 10:42:43
举报
<!DOCTYPE html>
<html lang="en" style="font-size: 30px">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type="text/css">
        *{padding: 0px;margin: 0px;}
        div
        {
            width: 10rem;
            height: 10rem;
            background: black;
        }
    </style>
</head>
<body style="font-size: 40px">
    <div style="font-size: 50px"></div>
    <script type="text/javascript">
        var div=document.querySelector("div");
        console.log(div.offsetWidth,div.offsetHeight);
    </script>
</body>
</html>

注意点,在html上设置font-size是rem的前提.计算方式.3010=300 3010=300

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

用touch做js拖拽.记住,touch只在移动端有效. 问题:为什么用定位流做? 因为

在这里插入图片描述
在这里插入图片描述

问题2:touches[0]是什么意思? 是一次只有一个手指触碰. 问题3:为什么前面加e,因为是事件这个领域里面的属性啊.

在这里插入图片描述
在这里插入图片描述

问题4,拖拽怎么做? 第一;我举个例子把,好吧. 例如start的时候div在100,100,鼠标在150 150的地点,move的时候在300 300,鼠标在350 350 的位置. 第二:那么

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

start的时候第一个图片的结果代表div的边缘到鼠标的距离.(开始的时候) move的时候第二个图片的结果代表div边缘到可视区的距离.(移动后的) 最终达到了拖拽的目的. 核心:开始是开始的xy坐标,移动是移动的xy坐标.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type="text/css">
        *{margin: 0;padding: 0;list-style: none;}
body{overflow: hidden;}
#div1{width: 200px;height: 200px;background: black;
    position: absolute;
}
#div2{
    position: absolute;
    width: 50px;height: 50px;
    background: red;left: 500px;top: 500px;
}

    </style>
</head>
<body>
    <div id='div1'>
</div>
<script type="text/javascript">
    var div1=document.querySelector("#div1");
    var l = t = 0;
    div1.addEventListener("touchstart",function(e)
        {
            l=e.touches[0].clientX-div1.offsetLeft;
            t = e.touches[0].clientY - div1.offsetTop;
        },false);
    document.addEventListener("touchmove",function(e)
        {
            div1.style.left=e.touches[0].clientX-l+"px";
            div1.style.top = e.touches[0].clientY - t + 'px';
        },false);
</script>
</body>
</html>
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档