interactjs snap
by Dinh Nguyen
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: 10, y: 10 })
]
},
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)';
});