用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>
时间: 2024-11-21 03:13:17

用jQuery实现拖动的相关文章

最好用的jquery列表拖动排列(由项目提取)

代码压缩包下载: http://pan.baidu.com/s/1mgxAIy0 代码一预览: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

jquery 鼠标拖动排序Li或Table

1.前端页面 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="拖动排序Li或Table.aspx.cs" Inherits="拖动排序Li或Table" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o

jQuery UI 拖动(Draggable) - 事件

定义和用法 draggable 上的 start.drag 和 stop 事件.拖拽开始时触发 start 事件,拖拽期间触发 drag 事件,拖拽停止时触发  stop 事件 示例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"&

jQuery UI 拖动(Draggable) - Handles和Cancel

定义和用法 只有当光标在 draggable 上指定部分时才允许拖拽.使用 handle 选项来指定用于拖拽对象的元素(或元素组)的 jQuery 选择 器或者当光标在 draggable 内指定元素(或元素组)上时不允许拖拽.使用 cancel选项来指定取消拖拽功能的 jQuery 选择器 示例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equi

jQuery UI 拖动(Draggable) - 还原位置

定义和用法 当带有布尔值 revert 选项的 draggable 停止拖拽时,返回 draggable(或它的助手)到原始位置 示例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>jQuery 

jQuery UI 拖动(Draggable) - 延迟开始

定义和用法 通过 delay 选项设置延迟开始拖拽的毫秒数.通过 distance 选项设置光标被按下且拖拽指定像素后才允许拖拽 示例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>jQuery 

jQuery可拖动图标导航菜单

jQuery可拖动图标导航菜单,jQuery,可拖动,图标导航,页面固定,菜单导航,jQuery可拖动图标导航菜单是一款jquery fixed页面固定div可拖动图标导航菜单效果. 下载地址:http://www.huiyi8.com/sc/5909.html(转载请注明此处)

jquery div拖动效果示例代码

1 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transit

jQuery - 左右拖动分隔条

1.实现效果: 2.代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> New Document </title> <script type="text/javascript"

JQuery EasyUI---Draggable( 拖动) 组件

学习要点: 1.加载方式2.属性列表3.事件列表4.方法列表 本节重点了解 EasyUI 中 Draggable(拖动)组件的使用方法,这个组件不依赖于其他组件. 一. 加载方式 //class 加载方式  这种方式看起来html代码不干净,会污染html.建议使用JS的方式去加载 <!DOCTYPE html> <html> <head> <title>jQuery Easy UI</title> <meta charset="