js块元素手指触摸及鼠标拖拽放置,实现方案

本文阅读 3 分钟
广告

最近的项目要实现一个根据滑动距离,把一个div从屏幕底部升上来的效果,但问题是代码我不怎么会写,所以就请教了万能的百度。在参考了很多方案之后,终于找到了一个合适的,并且自己改造了一番成功实现了效果,改造之后的代码自然是不好分享的,但是原本的参考代码,我觉得有必要记录一下。

参考原文地址:点击进入

代码已经修改了一点儿。

html代码如下:

<div id="concent" style="width:100px;height:100px;background:#3eb060;position:absolute;"></div>

js代码如下:

<script>
    var flag = false;//鼠标|手指是否按下的标记
    var cur = {//记录鼠标|手指按下时的坐标
        x:0,
        y:0
    }
    var nx,ny,dx,dy,x,y ;
    //按下时的函数
    function down(){
        flag = true;//确认鼠标|手指按下
        var touch ;
        if(event.touches){
            touch = event.touches[0];//多个鼠标|手指事件取第一个
        }else {
            touch = event;
        }
        cur.x = touch.clientX; //记录鼠标|手指当前的x坐标
        cur.y = touch.clientY;//记录鼠标|手指当前的y坐标
        dx = div2.offsetLeft;//记录div当时的左偏移量
        dy = div2.offsetTop;//记录div的上偏移量
    }
    function move(){
        if(flag){//如果是鼠标|手指按下则继续执行
            var touch ;
            if(event.touches){
                touch = event.touches[0];
            }else {
                touch = event;
            }
            nx = touch.clientX - cur.x;//记录在鼠标|手指x轴移动的数据
            ny = touch.clientY - cur.y;//记录在鼠标|手指y轴移动的数据
            x = dx+nx; //div在x轴的偏移量加上鼠标|手指在x轴移动的距离
            y = dy+ny; //div在y轴的偏移量加上鼠标|手指在y轴移动的距离
            div2.style.left = x+"px";
            div2.style.top = y +"px";
            //阻止页面的滑动默认事件
            document.addEventListener("touchmove",function(){
                event.preventDefault();
            },false);
        }
    }
    //鼠标|手指释放时候的函数
    function end(){
        flag = false; //鼠标|手指释放
    }
    var div2 = document.getElementById("div2");
    div2.addEventListener("mousedown",function(){
        down();
    },false);
    div2.addEventListener("touchstart",function(){
        down();
    },false)
    div2.addEventListener("mousemove",function(){
        move();
    },false);
    div2.addEventListener("touchmove",function(){
        move();
    },false)
    document.body.addEventListener("mouseup",function(){
        end();
    },false);
    div2.addEventListener("touchend",function(){
        end();
    },false);
</script>

实际效果演示:
可以自行拖动绿色方块。查看实际的效果,讲真这东西的实际应用特别广泛。

1.jpg

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.ruletree.club/archives/1465/
jquery常用正则验证,以及基础用法
« 上一篇 10-16
有趣的图片木马样本,简单吹水
下一篇 » 12-21
广告

发表评论

V注册会员 L评论等级
R3 条回复
  1. 远山南蛰 | moefo.cnLv.1 说道:
    2022-02-19     Win 10 /    Chrome

    强呀

  2. 广东羊城技工学校Lv.1 说道:
    2019-11-03     Win 10 /    Chrome

    博主的网站还是很不错的,不过更新要有节奏。还有就是博主,我建议你,网站的界面可以适当修整一下,例如,块的边框可以去掉,这样整站看起来才不会花,才会大气。今天看了你一篇文章解决了一些问题,谢谢。

    1. 不暇VLv.6 说道:
      2019-11-05     Win 7 /    Chrome

      @广东羊城技工学校

      感谢建议!

没有更多评论了

作者信息

热门文章

标签TAG

热评文章