Thanks for your wonderful code:
‘Create a Draggable Element in JavaScript’
But I am stuck on :
‘how to add multiple #item s to the page?’ .
Some sort of indexing I guess .
Can someone show me how to do this ?
Thank you very much !
No ‘insert code icon’ , so I’ll just put code here:
> <!DOCTYPE html>
> <html>
>
> <head>
> <meta name="viewport"
> content="width=device-width,
> initial-scale=1.0,
> user-scalable=no" />
> <title>Drag/Drop/Bounce</title>
> <style>
> #container {
> width: 100%;
> height: 400px;
> background-color: #f0f0f0;
> display: flex;
> align-items: center;
> justify-content: center;
> overflow: hidden;
> border-radius: 7px;
> touch-action: none;
> }
> .item {
> width: 100px;
> height: 100px;
> background-color: rgb(245, 230, 99);
> border: 10px solid rgba(136, 136, 136, .5);
> border-radius: 50%;
> touch-action: none;
> user-select: none;
> }
> .item:active {
> background-color: rgba(168, 218, 220, 1.00);
> }
> .item:hover {
> cursor: pointer;
> border-width: 20px;
> }
> </style>
> </head>
>
> <body>
>
> <div id="outerContainer">
> <div id="container">
>
> <div class="item">
>
> </div>
>
> <div> Another div--> </div>
>
> <div class="item">
>
> </div>
>
> </div>
> </div>
>
> <script>
> var dragItem = document.querySelector(".item");
> var container = document.querySelector("#container");
>
> var active = false;
> var currentX;
> var currentY;
> var initialX;
> var initialY;
> var xOffset = 0;
> var yOffset = 0;
>
> container.addEventListener("touchstart", dragStart, false);
> container.addEventListener("touchend", dragEnd, false);
> container.addEventListener("touchmove", drag, false);
>
> container.addEventListener("mousedown", dragStart, false);
> container.addEventListener("mouseup", dragEnd, false);
> container.addEventListener("mousemove", drag, false);
>
> function dragStart(e) {
> if (e.type === "touchstart") {
> initialX = e.touches[0].clientX - xOffset;
> initialY = e.touches[0].clientY - yOffset;
> } else {
> initialX = e.clientX - xOffset;
> initialY = e.clientY - yOffset;
> }
>
> if (e.target === dragItem) {
> active = true;
> }
> }
>
> function dragEnd(e) {
> initialX = currentX;
> initialY = currentY;
>
> active = false;
> }
>
> function drag(e) {
> if (active) {
>
> e.preventDefault();
>
> if (e.type === "touchmove") {
> currentX = e.touches[0].clientX - initialX;
> currentY = e.touches[0].clientY - initialY;
> } else {
> currentX = e.clientX - initialX;
> currentY = e.clientY - initialY;
> }
>
> xOffset = currentX;
> yOffset = currentY;
>
> setTranslate(currentX, currentY, dragItem);
> }
> }
>
> function setTranslate(xPos, yPos, el) {
> el.style.transform = "translate3d(" + xPos + "px, " + yPos + "px, 0)";
> }
> </script>
> </body>
>
> </html>