interact.js是一款支持元素惯性拖放和多点触摸手势的js插件。该js插件支持在桌面设备和移动手机设备中拖放元素,拖动结束时带有惯性效果。并且支持移动设备的多点触摸手势。它的特点有:
bower install interact npm install interact.js
你也可以通过下面的CDN节点来引用该js插件:
<script src="//cdn.jsdelivr.net/interact.js/VERSION/interact.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/interact.js/VERSION/interact.min.js"></script>
interact
函数接收一个元素或CSS选择器和一个可选的options
选项。它返回Interactable
对象,该对象有一些方法和属性可以配置哪些事件可以触发以及修改结果坐标。这些方法都可以通过链式编程的方式来调用。
interact('.drag-and-resize') .draggable({ snap: { targets: [ { x: 100, y: 200 }, function (x, y) { return { x: x % 20, y: y }; } ]} }) .resizable({ inertia: true });
如果你想用选择器来选择一些元素,并且只想选择某些元素的子元素,可以在插件Interactable
对象时,在options
对象中传入一个context
元素。
通过使用同样的选择器但是指定不同的上下文,interact
会返回不同的对象。默认的上下文是document
。
<ul id="my-list"> <li> item 1 </li> <li> item 2 </li> <li> item 3 </li> </ul>
var myList = document.querySelector('#my-list'); interact('li', { context: myList }) .draggable({ /* ... */ }); If you want to use a selector to target elements but only want to to target the children of a certain element, add a context element to the options object when creating the Interactable. interact('li') === interact('li', { context: document }) // true interact('li') === interact('li', { context: myList }) // false
draggable
、resizable
和gesturable
方法使用true
和false
来简单的允许或不允许某些行为,或者使用一个带属性的对象来改变某些设置。
interact(target) .draggable({ max : Number, maxPerElement: Number, manualStart : Boolean, snap : {/* ... */}, restrict : {/* ... */}, inertia : {/* ... */}, autoScroll : {/* ... */}, axis : 'x' || 'y' }) .resizable({ max : Number, maxPerElement: Number, manualStart : Boolean, snap : {/* ... */}, restrict : {/* ... */}, inertia : {/* ... */}, autoScroll : {/* ... */}, square : true || false, axis : 'x' || 'y' }) .gesturable({ max : Number, maxPerElement: Number, manualStart : Boolean, restrict : {/* ... */} });
enabled
选项或属性值为true
那么可以执行交互行为。max
用于限制发生交互作用对象的数量。默认情况下任何数量的对象都可以发生交互作用。true
时, drag, resize 和 gesture行为将被执行。window
或一个HTML元素)更详细的参数、事件和方法资料请参看下载包中docs文件夹下的文档。