[封装插件]鼠标拖动元素跟随功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>鼠标拖动元素跟随功能</title>
    <!--百度在线压缩地址-->
    <script src="http://libs.baidu.com/jquery/1.7.2/jquery.min.js"></script>

    <style>
        *{
            margin:0;
            padding:0;
        }
        #divid{
            width:100px;
            height: 100px;
            background:red;
            position: absolute;
            left:0;
            top:0;
        }
    </style>
</head>
<body>

<!--<p>鼠标位于坐标: <span></span>.</p>    });-->
<div id="divid">

</div>
<script type="text/javascript">
/**
    screenX:鼠标位置相对于用户屏幕水平偏移量,而screenY也就是垂直方向的,此时的参照点也就是原点是屏幕的左上角。
    clientX:跟screenX相比就是将参照点改成了浏览器内容区域的左上角,该参照点会随之滚动条的移动而移动。
    pageX:参照点也是浏览器内容区域的左上角,但它不会随着滚动条而变动
 */
//完整的鼠标拖动案例封装方法
    function drag(obj) {
        obj.bind("mousedown",start);
        function start(event){
            //deltaX 和deltaY就表示鼠标在元素的那个位置
            deltaX = event.clientX-obj.offset().left;
            deltaY = event.clientY-obj.offset().top;

            $(document).bind("mousemove",move);
            $(document).bind("mouseup",stop);
            return false;   //防止出现拖动速度过快发生的滑出屏幕现象

        }

        function move(event) {
            obj.css({
                    //然后元素的坐标就等于鼠标的位置减去鼠标和元素的偏移量
                "left": (event.clientX - deltaX) + "px",
                "top": (event.clientY - deltaY) + "px",
            })
            return false;   //防止出现拖动速度过快发生的滑出屏幕现象
        }

        function stop() {
            $(document).unbind("mousemove", move);  //把所有的事件解绑
            $(document).unbind("mouseup", stop);    //把所有的事件解绑
        }
    }
    obj = $("#divid");
    drag(obj);
//使用这种方法完成目的会有bug , 当元素移动到外边的时候,鼠标会跟随,鼠标释放事件就消失了
/*    $("#divid").mousedown(function(){
        $(document).bind("mousemove",function(e){
            x = e.clientX;
            y = e.clientY;
            $("#divid").css({"top":y+"px","left":x+"px"});
        });
        $(this).mouseup(function(){
            $(document).unbind("mousemove");
        });
    })*/

/*
使用JS的方式去实现
    val = document.getElementById("divid");
    val.onmousedown = function(){
        document.onmousemove = function(event){
            x = event.clientX;
            y = event.clientY;
            val.style.top = y+"px";
            val.style.left = x+"px";

        }
    }
*/

</script>

</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值