• 用jQuery实现拖动


      今天我用jQuery实现了简单的物体拖放功能,已经设置的上下左右的临界点,可以更具自己的需要设置限制区域,我这里设置的是document对象的高度和宽度。

    原理很简单就是:

    1:获取当前物体的偏移量,以便于之后的计算

    2:获取鼠标的当前位置坐标。

    3:得到新的偏移量,保存下来

    4:新的位置是用旧的坐标加上偏移量的该变量,就能计算出现在物块的位置了。

    限制当然也很简单(我限制的宽高是当前浏览器页面的宽高),用新的位置和最大最小去做判断(我在代码部分做了很明确的注释),之后更具判断的值来设定位置就可以实现为止的限制了

    1:HTML部分

    <div id="box"></div>

    2:CSS部分

           * {
                margin: 0;
                padding: 0;
            }
    
            #box {
                position: absolute;
                top: 100px;
                left: 100px;
    
                width: 100px;
                height: 100px;
    
                background: orange;

    3:JQuery部分

    <script src="jquery-2.1.4.min.js"></script>
    <script>
        $(function () {
            //创建小方块的jquery对象
            var $box = $("#box");
            //创建小方块的鼠标点按下事件
            $box.mousedown(function (event) {
                //获取鼠标按下的时候左侧偏移量和上侧偏移量
                var old_left = event.pageX;//左侧偏移量
                var old_top = event.pageY;//竖直偏移量
    
                //获取鼠标的位置
                var old_position_left = $(this).position().left;
                var old_position_top = $(this).position().top;
    
                //鼠标移动
                $(document).mousemove(function (event) {
                    var new_left = event.pageX;//新的鼠标左侧偏移量
                    var new_top = event.pageY;//新的鼠标竖直方向上的偏移量
    
                    //计算发生改变的偏移量是多少
                    var chang_x = new_left - old_left;
                    var change_y = new_top - old_top;
    
                    //计算出现在的位置是多少
    
                    var new_position_left = old_position_left + chang_x;
                    var new_position_top = old_position_top + change_y;
                    //加上边界限制
                    if(new_position_top<0){//当上边的偏移量小于0的时候,就是上边的临界点,就让新的位置为0
                        new_position_top=0;
                    }
                    //如果向下的偏移量大于文档对象的高度减去自身的高度,就让它等于这个高度
                    if(new_position_top>$(document).height()-$box.height()){
                        new_position_top=$(document).height()-$box.height();
                    }
                    //右限制
                    if(new_position_left>$(document).width()-$box.width()){
                        new_position_left=$(document).width()-$box.width();
                    }
                    if(new_position_left<0){//左边的偏移量小于0的时候设置 左边的位置为0
                        new_position_left=0;
                    }
    
                    $box.css({
                        left: new_position_left + 'px',
                        top: new_position_top + 'px'
                    })
                });
                $box.mouseup(function(){
                    $(document).off("mousemove");
                })
            });
        })
    </script>
  • 相关阅读:
    RabbitMQ之六种队列模式
    面试资料
    位掩码的介绍与使用(小白鼠试毒问题)
    递归函数的写法(以strcpy函数为例)
    查找算法简介及实现
    八大排序算法概述及实现
    快速排序算法(一)
    最大(小)堆和堆排序简介
    满二叉树各种节点数目的计算
    LPSTR、LPCSTR、LPWSTR、LPCWSTR、LPTSTR、LPCTSTR的来源及意义
  • 原文地址:https://www.cnblogs.com/gavinzzh-firstday/p/5502092.html
Copyright © 2020-2023  润新知