移动、拖拽、吸附、HTML

本文探讨如何在HTML中实现元素的移动、拖拽和吸附功能,为在线布局提供灵活的操作体验。
摘要由CSDN通过智能技术生成

 

<!DOCTYPE html>
<html lang="en">

	<head>
		<meta charset="UTF-8">
		<title></title>
		<!-- jquery -->
		<script src="js1/jquery.min.js"></script>
		<!-- jquery-ui -->
		<link rel="stylesheet" href="js1/jquery-ui.min.css">
		<script src="js1/jquery-ui.min.js"></script>
		<style>
			body {
				font-family: courier new, courier;
				font-size: 12px;
			}

			.draggable {
				border: 1px solid #ccc;
				display: inline-block;
				cursor: move;
				position: absolute;
				padding: 30px;
			}

			.guide {
				display: none;
				position: absolute;
				left: 0;
				top: 0;
			}

			#guide-h {
				border-top: 1px dashed #55f;
				width: 100%;
			}

			#guide-v {
				border-left: 1px dashed #55f;
				height: 100%;
			}
		</style>
	</head>

	<body>

		<div class="draggable">1111111</div>

		<div class="draggable">2222222</div>

		<div class="draggable">3333333</div>

		<!--拖动辅助线-->

		<div id="guide-h" class="guide"></div>
		<div id="guide-v" class="guide"></div>

	</body>


	<script>
		//捕获的最小距离
		var MIN_DISTANCE = 8;
		// 没有可用的引导\导轨 
		var guides = [];
		var innerOffsetX, innerOffsetY;


		$(".draggable").draggable({

			//拖拽开始
			start: function(event, ui) {
				//$(".draggable").not(this) 不包过自己
				guides = $.map($(".draggable").not(this), computeGuidesForElement);

				//offsetX、offsetY:元素的X,Y坐标
				innerOffsetX = event.offsetX;
				innerOffsetY = event.offsetY;
			},

			//拖拽的时候
			drag: function(event, ui) {
				//迭代所有的guids,记住最近的h和v guids

				
				var guideV, guideH, distV = MIN_DISTANCE + 1,
					distH = MIN_DISTANCE + 1,
					offsetV, offsetH;

				//
				var chosenGuides = {
					top: {
						dist: MIN_DISTANCE + 1
					},
					left: {
						dist: MIN_DISTANCE + 1
					}
				};

				var $t = $(this);


				var pos = {
					top: event.pageY - innerOffsetY,
					left: event.pageX - innerOffsetX
				};

				//元素的宽。包含 padding 和 border
				var w = $t.outerWidth() - 1;
				var h = $t.outerHeight() - 1;

				
				var elemGuides = computeGuidesForElement(null, pos, w, h);

	
				$.each(guides, function(i, guide) {
					
					$.each(elemGuides, function(i, elemGuide) {
						
						if (guide.type == e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值