Skip to content

Repository files navigation

interact.js

JavaScript drag and drop, resizing and multi-touch gestures with inertia and snapping for modern browsers (and also IE8+).

Gitter

Features include:

  • inertia and snapping
  • multiple interactions
  • cross browser and device, supporting the desktop and mobile versions of Chrome, Firefox and Opera as well as Internet Explorer 8+
  • interaction with SVG elements
  • being lightweight and standalone (not yet another jQuery plugin)
  • not modifying the DOM except to support IE8 and to change the cursor (but you can disable that)

Installation

  • Bower: bower install interact
  • npm: npm install interact.js
  • Direct download the latest version: http://interactjs.io/#download
  • jsDelivr CDN: <script src="//cdn.jsdelivr.net/interact.js/VERSION/interact.min.js"></script>
  • cdnjs CDN: <script src="//cdnjs.cloudflare.com/ajax/libs/interact.js/VERSION/interact.min.js"></script> (replace VERSION with the SemVer you want to use)

Documentation

Visit http://interactjs.io/docs for the API documentation.

Example

varpixelSize=16;interact('.rainbow-pixel-canvas').origin('self').draggable({snap: {targets: [interact.createSnapGrid({x: pixelSize,y: pixelSize})]},// allow multiple drags on the same elementmaxPerElement: Infinity})// draw colored squares on move.on('dragmove',function(event){varcontext=event.target.getContext('2d'),// calculate the angle of the drag directiondragAngle=180*Math.atan2(event.dx,event.dy)/Math.PI;// set color based on drag angle and speedcontext.fillStyle='hsl('+dragAngle+', 86%, '+(30+Math.min(event.speed/1000,1)*50)+'%)';// draw squarescontext.fillRect(event.pageX-pixelSize/2,event.pageY-pixelSize/2,pixelSize,pixelSize);})// clear the canvas on doubletap.on('doubletap',function(event){varcontext=event.target.getContext('2d');context.clearRect(0,0,context.canvas.width,context.canvas.height);});functionresizeCanvases(){[].forEach.call(document.querySelectorAll('.rainbow-pixel-canvas'),function(canvas){canvas.width=document.body.clientWidth;canvas.height=window.innerHeight*0.7;});}// interact.js can also add DOM event listenersinteract(document).on('DOMContentLoaded',resizeCanvases);interact(window).on('resize',resizeCanvases);

See the above code in action at http://codepen.io/taye/pen/YPyLxE

License

interact.js is released under the MIT License.

About

JavaScript drag and drop, resizing and multi-touch gestures with inertia and snapping for modern browsers (and also IE8+)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages