拖动窗口并移动窗口位置

图片描述

该功能常见于滑动验证码
图片描述

HTML部分

<div id="box">
    <div id="title">按住拖动</div>
</div>

css部分

<style>
    * {
        padding: 0;
        margin: 0;
    }
    #box {
        width: 400px;
        height: 300px;
        background-color: orange;
        position: absolute;
        text-align: center;
        color: #ffffff;
    }
    #title {
        width: 100%;
        height: 2em;
        line-height: 2em;
        background-color: #999999;
        cursor: move;
    }
</style>

JS部分

<script type="text/javascript">        
        var box = document.getElementsByClassName('box')[0];        
        var title = document.getElementsByClassName('title')[0];        
        //0.声明一个开关变量        
        var off = 0;        
        //0.1声明一个变量一保存鼠标与盒子之间的距离        
        var cur = {};        
        //1.给标题添加鼠标按下事件        
        title.onmousedown = function(e){                            
            off = 1;
            //1.1 计算鼠标位置-盒子到页面的位置,得到一个差,永远不变
            cur.x = e.clientX-box.offsetLeft;
            cur.y = e.clientY-box.offsetTop;            
        }        
        //2.添加鼠标移动事件        
        document.onmousemove = function(e){            
            //2.1判断按下的开关状态  如果是真再运行            
            if(!off) return;
            var left = e.clientX - cur.x;            
            var tops = e.clientY - cur.y;
            //限制box不超出浏览器
            left = left<0?0:left;
            tops = tops<0?0:tops;
            left = left >= window.innerWidth-400 ? window.innerWidth-400 : left;
            tops = tops >= window.innerHeight-300 ? window.innerHeight-300 : tops;
            
            box.style.left = left+'px';
            box.style.top = tops+'px';            
        }        
        //3.添加鼠标抬起事件
        title.onmouseup = title.onmouseout= function(){            
            console.log('鼠标抬起');            
            off = 0;            
        }            
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值