HTML and CSS Reference
In-Depth Information
</style>
</head>
<body>
<div id="bucket1" class="bucket"></div>
<div id="bucket2" class="bucket"></div>
<div id="bucket3" class="bucket"></div>
<div id="chip" draggable="true" class="chip"></div>
</body>
The concept is that three buckets are defined by using div elements, and a chip is defined.
The user can drag the chip into any one of the three buckets. For the chip to be able to be
dragged, it must be draggable.
To begin the drag event, the dragstart must be handled:
var chip = document.getElementById("chip");
chip.addEventListener("dragstart", function ()
{ window.event.dataTransfer.setData("Text", this.id); });
In this handler, the dataTransfer object setData method is used to store what exactly is
being transferred. In this case, the ID of the source object is specified.
Next, the desired target element's event listeners must be set up. The following code
shows this:
var b1 = document.getElementById("bucket1");
b1.addEventListener("dragenter", function () {
b1.classList.add("over");
window.event.returnValue = false;
});
b1.addEventListener("dragleave", function () {
b1.classList.remove("over");
});
b1.addEventListener("dragover", function () {
window.event.returnValue = false;
});
b1.addEventListener("drop", function () {
window.event.returnValue = false;
var data = event.dataTransfer.getData("Text");
var d = document.getElementById(data);
d.classList.remove("begin");
d.classList.add("dropped");
this.appendChild(d);
});
In this code, the dragenter event listener is established so that the user gets a visual cue
with a transform that the element can be dropped onto. In the same token, the dragleave
event listener is set up to remove the effect. The dragover event is set to be ignored by
canceling it. This is only because div elements can't be dragged and dropped by default.
The last piece is the drop event handler. With this event handler, the drop is received. The
dataTransfer object's getData method is called to retrieve what's being dropped. The ID of the
source element gets a reference to the element and places it inside the target. The same code
can be repeated for the other two buckets, and then the chip can be dragged into each bucket.
Search WWH ::




Custom Search