js之 draggable图片div指定范围内拖动加调整大小


案例demo

demo解析

resizable:改变图片形状
containment:控制在一个范围内
$("#resizable").resizable({ containment: '.ey_show_a' });

draggable:拖动位置
containment:控制在一个范围内
$("#resizable").draggable({ containment: '.ey_show_a' });

draggable参数·概述

在任何DOM元素启用拖动功能。通过单击鼠标并拖动对象在窗口内的任何地方移动。
官方示例地址:http://jqueryui.com/demos/draggable/

所有的事件回调函数都有两个参数:event和ui,浏览器自有event对象,和经过封装的ui对象
ui.helper - 表示被拖拽的元素的JQuery对象
ui.position - 表示相对当前对象,鼠标的坐标值对象{top,left}
ui.offset - 表示相对于当前页面,鼠标的坐标值对象{top,left}

·参数(参数名 : 参数类型 : 默认值)
addClasses : Boolean : true
如果设置成false,将在加载时阻止ui-draggable样式的加载。
当有很多对象要加载draggable()插件的情况下,这将对性能有极大的优化。
初始: ('.selector').draggable({ addClasses: false }); 获取: var addClasses =('.selector').draggable('option', 'addClasses');
设置: $('.selector').draggable('option', 'addClasses', false);

appendTo : Element,Selector : 'parent'
The element passed to or selected by the appendTo option will be used as the draggable helper's container during dragging. By default, the helper is appended to the same container as the draggable.
初始:('.selector').draggable({ appendTo: 'body' }); 获取:var appendTo =('.selector').draggable('option', 'appendTo');
设置:$('.selector').draggable('option', 'appendTo', 'body');

axis : String : false
约束拖动的动作只能在X轴或Y轴上执行,可选值:'x', 'y'。
初始:('.selector').draggable({ axis: 'x' }); 获取:var axis =('.selector').draggable('option', 'axis');
设置:$('.selector').draggable('option', 'axis', 'x');

cancel : Selector : ':input,option'
防止在指定的对象上开始拖动。
初始:('.selector').draggable({ cancel: 'button' }); 获取:var cancel =('.selector').draggable('option', 'cancel');
设置:$('.selector').draggable('option', 'cancel', 'button');

connectToSortable : Selector : false
允许draggable被拖拽到指定的sortables中,如果使用此选项helper属性必须设置成clone才能正常工作。
初始:('.selector').draggable({ connectToSortable: 'ul#myList' }); 获取:var connectToSortable =('.selector').draggable('option', 'connectToSortable');
设置:$('.selector').draggable('option', 'connectToSortable', 'ul#myList');

containment : Selector,Element,String, Array : false
强制draggable只允许在指定元素或区域的范围内移动,可选值:'parent', 'document', 'window', [x1, y1, x2, y2].
初始:('.selector').draggable({ containment: 'parent' }); 获取:var containment =('.selector').draggable('option', 'containment');
设置:$('.selector').draggable('option', 'containment', 'parent');

cursor : String : 'auto'
指定在做拖拽动作时,鼠标的CSS样式。
初始:('.selector').draggable({ cursor: 'crosshair' }); 获取:var cursor =('.selector').draggable('option', 'cursor');
设置:$('.selector').draggable('option', 'cursor', 'crosshair');

cursorAt : Object : false
当开始移动时,鼠标定位在的某个位置上(最多两个方向)。可选值:{ top, left, right, bottom }.
初始:('.selector').draggable({ cursorAt: { left: 5 } }); 获取:var cursorAt =('.selector').draggable('option', 'cursorAt');
设置:$('.selector').draggable('option', 'cursorAt', { left: 5 });

delay : Integer : 0
当鼠标点下后,延迟指定时间后才开始激活拖拽动作(单位:毫秒)。此选项可以用来防止不想要的拖累元素时的误点击。
初始:('.selector').draggable({ delay: 500 }); 获取:var delay =('.selector').draggable('option', 'delay');
设置:$('.selector').draggable('option', 'delay', 500);

distance : Integer : 1
当鼠标点下后,只有移动指定像素后才开始激活拖拽动作。
初始:('.selector').draggable({ distance: 30 }); 获取:var distance =('.selector').draggable('option', 'distance');
设置:$('.selector').draggable('option', 'distance', 30);

grid : Array : false
拖拽元素时,只能以指定大小的方格进行拖动。可选值:[x,y]
初始:('.selector').draggable({ grid: [50, 20] }); 获取:var grid =('.selector').draggable('option', 'grid');
设置:$('.selector').draggable('option', 'grid', [50, 20]);

handle : Element, Selector : false
限制只能在拖拽元素内的指定元素开始拖拽。
初始:('.selector').draggable({ handle: 'h2' }); 获取:var handle =('.selector').draggable('option', 'handle');
设置:$('.selector').draggable('option', 'handle', 'h2');

helper : String, Function : 'original'
拖拽元素时的显示方式。(如果是函数,必须返回值是一个DOM元素)可选值:'original', 'clone', Function
初始:('.selector').draggable({ helper: 'clone' }); 获取:var helper =('.selector').draggable('option', 'helper');
设置:$('.selector').draggable('option', 'helper', 'clone');

iframeFix : Boolean, Selector : false
可防止当mouseover事件触发拖拽动作时,移动过iframes并捕获到它(内部内容),如果设置成true,则屏蔽层会覆盖页面的iframe。如果设置成对应的选择器,则屏蔽层会覆盖相匹配的iframe。
初始:('.selector').draggable({ iframeFix: true }); 获取:var iframeFix =('.selector').draggable('option', 'iframeFix');
设置:$('.selector').draggable('option', 'iframeFix', true);

opacity : Float : false
当元素开始拖拽时,改变元素的透明度。
初始:('.selector').draggable({ opacity: 0.35 }); 获取:var opacity =('.selector').draggable('option', 'opacity');
设置:$('.selector').draggable('option', 'opacity', 0.35);

refreshPositions : Boolean : false
如果设置成true,所有移动过程中的坐标都会被记录。(注意:此功能将影响性能)
初始:('.selector').draggable({ refreshPositions: true }); 获取:var refreshPositions =('.selector').draggable('option', 'refreshPositions');
设置:$('.selector').draggable('option', 'refreshPositions', true);

revert : Boolean, String : false
当元素拖拽结束后,元素回到原来的位置。
初始:('.selector').draggable({ revert: true }); 获取:var revert =('.selector').draggable('option', 'revert');
设置:$('.selector').draggable('option', 'revert', true);

revertDuration : Integer : 500
当元素拖拽结束后,元素回到原来的位置的时间。(单位:毫秒)
初始:('.selector').draggable({ revertDuration: 1000 }); 获取:var revertDuration =('.selector').draggable('option', 'revertDuration');
设置:$('.selector').draggable('option', 'revertDuration', 1000);

scope : String : 'default'
设置元素只允许拖拽到具有相同scope值的元素。
初始:('.selector').draggable({ scope: 'tasks' }); 获取:var scope =('.selector').draggable('option', 'scope');
设置:$('.selector').draggable('option', 'scope', 'tasks');

scroll : Boolean : true
如果设置为true,元素拖拽至边缘时,父容器将自动滚动。
初始:('.selector').draggable({ scroll: false }); 获取:var scroll =('.selector').draggable('option', 'scroll');
设置:$('.selector').draggable('option', 'scroll', false);

scrollSensitivity : Integer : 20
当元素拖拽至边缘时,父窗口一次滚动的像素。
初始:('.selector').draggable({ scrollSensitivity: 40 }); 获取:var scrollSensitivity =('.selector').draggable('option', 'scrollSensitivity');
设置:$('.selector').draggable('option', 'scrollSensitivity', 40);

scrollSpeed : Integer : 20
当元素拖拽至边缘时,父窗口滚动的速度。
初始:('.selector').draggable({ scrollSpeed: 40 }); 获取:var scrollSpeed =('.selector').draggable('option', 'scrollSpeed');
设置:$('.selector').draggable('option', 'scrollSpeed', 40);

snap : Boolean, Selector : false
当设置为true或元素标签时,元素拖动到其它元素的边缘时,会自动吸附其它元素。
初始:('.selector').draggable({ snap: 'span' }); 获取:var snap =('.selector').draggable('option', 'snap');
设置:$('.selector').draggable('option', 'snap', 'span');

snapMode : String : 'both'
确定拖拽的元素吸附的模式。可选值:'inner', 'outer', 'both'
初始:('.selector').draggable({ snapMode: 'outer' }); 获取:var snapMode =('.selector').draggable('option', 'snapMode');
设置:$('.selector').draggable('option', 'snapMode', 'outer');

snapTolerance : Integer : 20
确定拖拽的元素移动至其它元素多少像素的距离时,发生吸附的动作。
初始:('.selector').draggable({ snapTolerance: 40 }); 获取:var snapTolerance =('.selector').draggable('option', 'snapTolerance');
设置:$('.selector').draggable('option', 'snapTolerance', 40);

stack : Object : false
Controls the z-Index of the defined group (key 'group' in the hash, accepts jQuery selector) automatically, always brings to front the dragged item. Very useful in things like window managers. Optionally, a 'min' key can be set, so the zIndex cannot go below that value.
初始:('.selector').draggable({ stack: { group: 'products', min: 50 } }); 获取:var stack =('.selector').draggable('option', 'stack');
设置:$('.selector').draggable('option', 'stack', { group: 'products', min: 50 });

zIndex : Integer : false
控制当拖拽元素时,改变元素的z-index值。
初始:('.selector').draggable({ zIndex: 2700 }); 获取:var zIndex =('.selector').draggable('option', 'zIndex');
设置:$('.selector').draggable('option', 'zIndex', 2700);

·事件
start
当鼠标开始拖拽时,触发此事件。
初始:('.selector').draggable({ start: function(event, ui){...} }); 绑定:('.selector').bind('dragstart', function(event, ui){...});

drag
当鼠标拖拽移动时,触发此事件。
初始:('.selector').draggable({ drag: function(event, ui){...} }); 绑定:('.selector').bind('drag', function(event, ui){...});

stop
当鼠标松开时,触发此事件。
初始:('.selector').draggable({ stop: function(event, ui){...} }); 绑定:('.selector').bind('dragstop', function(event, ui){...});

·方法
destory
从元素中移除拖拽功能。
用法:.draggable( 'destroy' )

disable
禁用元素的拖拽功能。
用法:.draggable( 'disable' )

enable
启用元素的拖拽功能。
用法:.draggable( 'enable' )

option
获取或设置元素的参数。
用法:.draggable( 'option' , optionName , [value] )

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容