draggabilly | 功能强大的拖动拖拽元素插件
源码介绍
draggabilly是一款功能强大的网页元素拖动拖拽插件。该元素拖拽插件可以和jQuery结合使用,也可以以纯js的方式使用。它提供了强大的拖拽元素的能力,并且可以支持IE8浏览器和移动触摸设备。 可以通过bower或npm来安装该draggabilly插件。 插件在拖动元素的时候会附加两个class类: 可以通过标准的jQuery事件: 也可以通过纯JS使用 在拖动开始,元素移动的时候触发。 在拖拽元素移动的时候触发。 当元素拖动结束的时候触发。 当用户指针(mouse, touch, pointer)被按下的时候触发。 当用户指针移动的时候触发。 当用户指针被松开的时候触发。 在用户指针被按下不松开,并且没有移动的时候触发。 Draggabilly官方主页:http://draggabilly.desandro.com/简要教程
使用方法
安装
bower install draggabilly
npm install draggabilly
作为jQuery插件来使用
var $draggable = $('.draggable').draggabilly({
// options...
})
通过纯JS来初始化该拖动元素插件
var elem = document.querySelector('.draggable');
var draggie = new Draggabilly( elem, {
// options...
});
// or pass in selector string as first argument
var draggie = new Draggabilly( '.draggable', {
// options...
});
// if you have multiple .draggable elements
// get all draggie elements
var draggableElems = document.querySelectorAll('.draggable');
// array of Draggabillies
var draggies = []
// init Draggabillies
for ( var i=0, len = draggableElems.length; i < len; i++ ) {
var draggableElem = draggableElems[i];
var draggie = new Draggabilly( draggableElem, {
// options...
});
draggies.push( draggie );
}
CSS样式
.is-pointer-down
:当用户第一次点击元素(mouse, touch, pointer)是添加的class。.is-dragging
:当元素开始拖动的时候添加的class。 配置参数
axis
:类型:String,可用值:'x' 或 'y'。约束元素只能在X或Y轴移动。containment
:类型:Element,Selector String或Boolean。约束元素只能在指定的容器中拖动。如果设置为true
,那么约束容器就是该元素的父元素。grid
:类型:Array,可用值:[ x, y ]。元素拖动是会以网格的方式进行吸附。handle
:类型:Selector String。指定拖动交互的元素。 事件
通过jQuery来绑定事件
.on()
,.off()
,.one()
来绑定事件,在事件内部,this
引用就是Draggabilly元素。
// jQuery
function listener(/* parameters */) {
// 获取Draggabilly对象实例
var draggie = $(this).data('draggabilly');
console.log( 'eventName happened', draggie.position.x, draggie.position.y );
}
// 绑定事件监听
$draggable.on( 'eventName', listener );
// 移除事件监听
$draggable.off( 'eventName', listener );
// 只绑定一次事件,注意是ONCE,而不是ONE或ON
$draggable.one( 'eventName', function() {
console.log('eventName happened just once');
});
通过纯JS来绑定事件
.on()
,.off()
,.one()
方法来绑定事件,在事件内部,this
引用就是Draggabilly元素。
// vanilla JS
function listener(/* parameters */) {
console.log( 'eventName happened', this.position.x, this.position.y );
}
// 绑定事件监听
draggie.on( 'eventName', listener );
// 移除事件监听
draggie.off( 'eventName', listener );
// 只绑定一次事件,注意是ONCE,而不是ONE或ON
draggie.once( 'eventName', function() {
console.log('eventName happened just once');
});
dragStart
// jQuery
$draggable.on( 'dragStart', function( event, pointer ) {...})
// vanilla JS
draggie.on( 'dragStart', function( event, pointer ) {...})
event
:类型:Event。原生的mousedown
或touchstart
事件。pointer
:类型:MouseEvent或Touch。有.pageX
和.pageY
的事件对象。dragMove
// jQuery
$draggable.on( 'dragMove', function( event, pointer, moveVector ) {...})
// vanilla JS
draggie.on( 'dragMove', function( event, pointer, moveVector ) {...})
event
:类型:Event。原生的mousemove
或touchmove
事件。pointer
:类型:MouseEvent或Touch。有.pageX
和.pageY
的事件对象。moveVector
:类型:Object。鼠标指针移动到距离开始移动位置有多远:{ x: 20, y: -30 }
。dragEnd
// jQuery
$draggable.on( 'dragEnd', function( event, pointer ) {...})
// vanilla JS
draggie.on( 'dragEnd', function( event, pointer ) {...})
event
:类型:Event。原生的mouseup
或touchend
事件。pointer
:类型:MouseEvent或Touch。有.pageX
和.pageY
的事件对象。pointerDown
// jQuery
$draggable.on( 'pointerDown', function( event, pointer ) {...})
// vanilla JS
draggie.on( 'pointerDown', function( event, pointer ) {...})
event
:类型:Event。原生的mousedown
或touchstart
事件。pointer
:类型:MouseEvent或Touch。有.pageX
和.pageY
的事件对象。pointerMove
// jQuery
$draggable.on( 'pointerMove', function( event, pointer, moveVector ) {...})
// vanilla JS
draggie.on( 'pointerMove', function( event, pointer, moveVector ) {...})
event
:类型:Event。原生的mousemove
或touchmove
事件。pointer
:类型:MouseEvent或Touch。有.pageX
和.pageY
的事件对象。moveVector
:类型:Object。鼠标指针移动到距离开始移动位置有多远:{ x: 20, y: -30 }
。pointerUp
// jQuery
$draggable.on( 'pointerUp', function( event, pointer ) {...})
// vanilla JS
draggie.on( 'pointerUp', function( event, pointer ) {...})
event
:类型:Event。原生的mouseup
或touchend
事件。pointer
:类型:MouseEvent或Touch。有.pageX
和.pageY
的事件对象。staticClick
// jQuery
$draggable.on( 'staticClick', function( event, pointer ) {...})
// vanilla JS
draggie.on( 'staticClick', function( event, pointer ) {...})
event
:类型:Event。原生的mouseup
或touchend
事件。pointer
:类型:MouseEvent或Touch。有.pageX
和.pageY
的事件对象。 方法
disable
// jQuery
$draggable.draggabilly('disable')
// vanilla JS
draggie.disable()
enable
// jQuery
$draggable.draggabilly('enable')
// vanilla JS
draggie.enable()
destroy
// jQuery
$draggable.draggabilly('destroy')
// vanilla JS
draggie.destroy()
jQuery.fn.data('draggabilly')
:从jQuery对象中获取Draggabilly实例。
var draggie = $('.draggable').data('draggabilly')
// access Draggabilly properties
console.log( 'draggie at ' + draggie.position.x + ', ' + draggie.position.y )
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » draggabilly | 功能强大的拖动拖拽元素插件
发表评论 取消回复