js#原生#拖拽组件的实现

实现拖拽组件

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			#box {
				position: relative;
				width: 200px;
				height: 20px;
				background: red;
				cursor: move;
			}

			.parent {
				border: 1px solid #0000FF;
				position: absolute;
			}
		</style>
	</head>

	<body>
		<div class="parent" id='parent'>
			<div id="box"></div>
			<div>
				hello world
			</div>
			<div>welcome to login</div>
			<form action="">
				<input type="text" placeholder="输入用户名字"><br>
				<input type="password" placeholder="输入用户名字"><br>
				<button type='button'>login </button><br>
			</form>

		</div>
	</body>
	<script type="text/javascript">
		var box = document.getElementById("box");
		var parent = document.getElementById("parent");
	</script>

	<script type="text/javascript">
		box.onmousedown = function(event) {
			var e = event || window.event;
			var dx = event.clientX - parent.offsetLeft
			var dy = event.clientY - parent.offsetTop
			if (typeof box.setCapture !== 'undefined') {
				box.setCapture();
			}

			// 鼠标按下 定义事件
			//鼠标松开 取消事件
			document.onmousemove = function(e) {
				var e = e || window.event
				var X = e.clientX - dx
				var Y = e.clientY - dy
				if (X < 0) {
					X = 0
				} else if (X > window.innerWidth - parent.offsetWidth) {
					X = window.innerWidth - parent.offsetWidth
				}
				if (Y < 0) {
					Y = 0
				} else if (Y > window.innerHeight - parent.offsetHeight) {
					Y = window.innerHeight - parent.offsetHeight
				}
				parent.style.left = X + 'px'
				parent.style.top = Y + 'px'
			}
			document.onmouseup = function() {
				this.onmousemove = null
				this.onmouseup = null
				if (typeof box.releaseCapture != 'undefined') {
					box.releaseCapture()
				}
			}



		}
	</script>


</html>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值