可拖动的悬浮div,兼容手指触摸和鼠标点击

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>适配移动端的拖动效果</title>
    <style>
       /* #div1{
            height: 1000px;
        }*/
        #div2{
            position: absolute;
            top:0;
            left:0;
            width: 100px;
            height: 100px;
            background: #bbbbbb;
        }
    </style>
</head>
<body>
<!--<div id="div1">-->
    <div id="div2"></div>
<!--</div>-->
<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>
</body>
</html>
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现鼠标拖动改变div列宽和行高,你可以使用JavaScript和CSS来完成。下面是一种实现方式: 1. 首先,在HTML中创建一个包含多个div的容器,每个div代表一个列或行。例如,创建一个id为"container"的div容器,并在其中添加一些子div。 ```html <div id="container"> <div class="column"></div> <div class="column"></div> <div class="column"></div> </div> ``` 2. 在CSS中设置容器和列的样式。设置列的宽度和高度,以及鼠标光标样式。 ```css #container { display: flex; } .column { flex: 1; min-width: 100px; min-height: 100px; border: 1px solid black; cursor: col-resize; } ``` 3. 在JavaScript中添加事件监听器,以便在鼠标拖动时改变列的宽度和行的高度。 ```javascript var columns = document.querySelectorAll('.column'); var isResizing = false; var lastDownX = 0; var newWidth = 0; columns.forEach(function(column) { column.addEventListener('mousedown', function(e) { isResizing = true; lastDownX = e.clientX; newWidth = column.offsetWidth; }); column.addEventListener('mousemove', function(e) { if (!isResizing) return; var widthChange = e.clientX - lastDownX; newWidth = newWidth + widthChange; column.style.width = newWidth + 'px'; }); column.addEventListener('mouseup', function() { isResizing = false; }); }); ``` 通过以上代码,你可以在鼠标拖动时改变每个div列的宽度。同样的原理也适用于改变行的高度,只需适当调整CSS和JavaScript即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值