简要教程
draggabilly是一款功能强大的网页元素拖动拖拽插件。该元素拖拽插件可以和jQuery结合使用,也可以以纯js的方式使用。它提供了强大的拖拽元素的能力,并且可以支持IE8浏览器和移动触摸设备。
查看演示 下载插件
可以通过bower或npm来安装该draggabilly插件。
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 ); }
插件在拖动元素的时候会附加两个class类:
可以通过标准的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'); });
在拖动开始,元素移动的时候触发。
// jQuery $draggable.on( 'dragStart', function( event, pointer ) {...}) // vanilla JS draggie.on( 'dragStart', function( event, pointer ) {...})
在拖拽元素移动的时候触发。
// jQuery $draggable.on( 'dragMove', function( event, pointer, moveVector ) {...}) // vanilla JS draggie.on( 'dragMove', function( event, pointer, moveVector ) {...})
当元素拖动结束的时候触发。
// jQuery $draggable.on( 'dragEnd', function( event, pointer ) {...}) // vanilla JS draggie.on( 'dragEnd', function( event, pointer ) {...})
当用户指针(mouse, touch, pointer)被按下的时候触发。
// jQuery $draggable.on( 'pointerDown', function( event, pointer ) {...}) // vanilla JS draggie.on( 'pointerDown', function( event, pointer ) {...})
当用户指针移动的时候触发。
// jQuery $draggable.on( 'pointerMove', function( event, pointer, moveVector ) {...}) // vanilla JS draggie.on( 'pointerMove', function( event, pointer, moveVector ) {...})
当用户指针被松开的时候触发。
// jQuery $draggable.on( 'pointerUp', function( event, pointer ) {...}) // vanilla JS draggie.on( 'pointerUp', function( event, pointer ) {...})
在用户指针被按下不松开,并且没有移动的时候触发。
// jQuery $draggable.on( 'staticClick', function( event, pointer ) {...}) // vanilla JS draggie.on( 'staticClick', function( event, pointer ) {...})
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官方主页: http://draggabilly.desandro.com/
本文版权属于jQuery之家,转载请注明出处:http://www.htmleaf.com/jQuery/Layout-Interface/201509142570.html