nippleJS
A virtual joystick for touch capable interfaces
...Your joystick's container has to have its CSS position property set, either absolute, relative, static. You can configure your joystick in different ways. The dom element in which all your joysticks will be injected. You can listen events both on the manager and all the joysticks. But some of them are specific to its instance. When listening on the manager, you can also target a joystick in particular by prefixing the event with its identifier.