interactjs snap

HTML

<script src="https://cdn.jsdelivr.net/interact.js/1.2.6/interact.min.js"></script>
<div id="grid-snap">
Snapping
</div>

CSS

#grid-snap {
  width: 10%;
  background-color: #29e;
  color: #fff;
  font-size: 1.2em;
  border-radius: 4px;
  padding: 2%;
  margin: 5%;
}

JavaScript

var element = document.getElementById('grid-snap'),
x = 0, y = 0;
interact(element)
  .draggable({
    snap: {
      targets: [
        interact.createSnapGrid({ x: 5, y: 5 })
      ]
    },
    inertia: true,
    restrict: {
      restriction: element.parentNode,
      elementRect: { top: 0, left: 0, bottom: 1, right: 1 },
      endOnly: true
    }
  }).on('dragmove', function (event) {
    x += event.dx;
    y += event.dy;
    event.target.style.webkitTransform = 'translate(' + x + 'px, ' + y + 'px)';
    event.target.style.transform = 'translate(' + x + 'px, ' + y + 'px)'; 
  });