view src/examples/drop.html @ 4:0130ae25ef94

add drop
author Franklin Schmidt <fschmidt@gmail.com>
date Sat, 22 Apr 2023 21:17:53 -0600
parents
children 1293cb0d30da
line wrap: on
line source

<!doctype html>
<html>
	<head>
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<style>
			@import "/site.css";
			@import "/dad.css";

			span[handle] {
				display: inline-block;
				background-color: LightGreen;
				padding: 8px;
			}
			span[outer] {
				display: inline-block;
				background-color: LightBlue;
				padding: 8px;
				position: relative;
			}
		</style>
		<script src="/dad.js"></script>
		<script>
			dad.whatToDrag = function(draggable) {
				return draggable.parentNode;
			};

			dad.onDrop = function(event) {
				let draggable = event.draggable;
				let style = draggable.style;
				let left = style.left ? parseInt(style.left) : 0;
				let top = style.top ? parseInt(style.top) : 0;
				let rectDragged = event.dragged.getBoundingClientRect();
				let rectDraggable = draggable.getBoundingClientRect();
				left += rectDragged.x - rectDraggable.x;
				top += rectDragged.y - rectDraggable.y;
				style.left = left + 'px';
				style.top = top + 'px';
			};

			function init() {
				let span = document.querySelector('span[handle]');
				dad.setDraggable(span);
			}
		</script>
	</head>
	<body>
		<h1>Handle</h1>
		<p>
			<span outer>
				<span handle>drag me</span>
				along for the ride
			</span>
		</p>
		<p>bottom</p>
	</body>
	<script> init(); </script>
</html>