javascript 中的鼠标拖拽 -逆战班

关于js中广泛应用的托拽效果。和电商放大效果,其核心应用在于拖拽和tab切换;放大图片的基础应用我想大家应该都很清楚。
拖拽事件也无非是加不加位置限定,和处法条件的不同。
1聊天窗口的拖拽。点击触发`

 <style>
        .box{
            width: 100px;
            height: 100px;
            background-color: pink;
            position:absolute;
        }
 </style>
        <div class="box"></div>
        js属性
var box = document.querySelector(".box");
box.onmousedown = function(e){
    var e = e || window.event ;
    var ox = e.offsetX;
    var oy = e.offsetY;
    这里获取的x,y只是div本身的左上角点位的坐标。实际就是我们所说的左边距与上边距
    如果我们有限定条件这里获取x,y坐标是就要根据我们的实际需要进行获取。之后还会有限定移动范围的案例给大家参考
    document.onmousemove = function(ev){
        ev = ev || window.event;
        var x = ev.clientX - ox;
        var y = ev.clientY - oy;
  这里clentX/Y获取的是 **左上角点位的** 实时位置。此时用实时位置减去出事位置。就必然是我们鼠标移动的距离
        box.style.left = x + 'px';
        box.style.top = y + 'px';
    }
}
box.onmouseup = function(){
    document.onmousemove = null;
}

如果我们要对应当范围进行限制。必然是对只好的结果进行限制。我们可以通过简单的逻辑语句和赋值操作来实现这个目的。 (限制我们得到的值 取值范围 0-100px)这样。盒子本身的移动范围就会被限定

var box = document.querySelector(".box");
box.onmousedown = function(e){
    var e = e || window.event ;
    var ox = e.offsetX;
    var oy = e.offsetY;
    document.onmousemove = function(ev){
        ev = ev || window.event;
        var x = ev.clientX - ox;
        var y = ev.clientY - oy;
        var l = x ;
        var t = y ;
        if(l<min){
        l = min;
        }else if(l>max){
    l = max}
 通过if逻辑的判断。和赋值。我们可以很轻松的对齐移动范围进行限定。在(min(0)~max)之间的范围内进行移动。**注意这里是 可平移的距离。   如果要确定范围  加上你div本身的 width**
 **max一般为套盒中大的width-小的width来限定距离,本身范围应该是大的width**
    }
}

box.onmouseup = function(){
    document.onmousemove = null;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值