`
明子健
  • 浏览: 576869 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JQuery实现鼠标拖动元素移动位置(源码+注释)

阅读更多

欢迎讨论指正!

 

print.html代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>发票打印</title>
</head>
<script type="text/javascript"
	src="js/jquery-2.1.1.js"></script>
<script type="text/javascript"
	src="js/print.js"></script>
<body>
	<div name="invoice">
		<div name="stuname" id="stuname">姓名:张三</div>

		<div name="feeacount" id="feeacount">金额:1000元</div>

		<div name="schoolname" id="schoolname">单位:浙江大学</div>

	</div>
</body>
</html>

 

print.js代码:

/**
 * @name print.js
 * @page print.html
 * @author mingzijian
 */
$(function() {

	// 设定元素相对原点的初始位置
	var init_x = 0;
	var init_y = 0;

	// 设定各元素的初始位置
	var _stuname = $("#stuname");
	var stuname_x = 10;
	var stuname_y = 10;
	var _feeacount = $("#feeacount");
	var feeacount_x = 10;
	var feeacount_y = 70;
	var _schoolname = $("#schoolname");
	var schoolname_x = 10;
	var schoolname_y = 40;

	var ids = [ _stuname, _feeacount, _schoolname ];
	var ids_x = [ stuname_x, feeacount_x, schoolname_x ];
	var ids_y = [ stuname_y, feeacount_y, schoolname_y ];

	// 循环添加元素移动事件监听,添加绝对定位,改变鼠标指针样式
	$.each(ids, function(i, _this) {
		_this.css({
			'position' : 'absolute',
			'cursor' : 'crosshair',
			'left' : ids_x[i],
			'top' : ids_y[i]
		});

		_this.mousedown(function(e) {
			beginmove(e, _this);
		});
	});

	// 开始移动元素位置
	function beginmove(e, _this) {
		// 当前元素的位置
		var offset = _this.offset();
		var cx = offset.left;
		var cy = offset.top;
		// 当前鼠标的位置(移动前,鼠标按下)
		var sx = e.pageX;
		var sy = e.pageY;

		// 计算当前鼠标和元素之间位置的偏移量,让移动后的元素以鼠标按下时的位置为坐标。(默认以元素左上点为坐标)
		var px = sx - cx;
		var py = sy - cy;

		// 绑定鼠标的移动事件,因为光标在DIV元素外面也要有效果,所以要用doucment的事件,而不用DIV元素的事件
		$(document).bind("mousemove", function(ev) {
			// 当前鼠标的位置(移动后,鼠标弹起)
			sx = ev.pageX;
			sy = ev.pageY;

			// 当前元素位置
			var _x = sx - px;
			var _y = sy - py;
			// 设定元素位置
			_this.css({
				'left' : _x,
				'top' : _y
			});
		});
		// 当鼠标按键弹起时,解除元素移动,让元素停留在当前位置
		$(document).mouseup(function() {
			$(this).unbind("mousemove");
			// 记录元素位置
			$.each(ids, function(i, _this) {
				// 当前元素的位置
				var offset = _this.offset();
				var cx = offset.left;
				var cy = offset.top;
				// 保存位置
				ids_x[i] = cx;
				ids_y[i] = cy;

			});

		})
	}
});

 

 

 

 jquery-2.1.1.js下载

 

案例下载

0
0
分享到:
评论

相关推荐

    Jquery 自定义可移动的插件弹窗

    **jQuery 自定义可移动弹窗插件** ...它不仅提供了基本的显示和隐藏功能,还支持用户通过鼠标拖动来调整弹窗位置,增强了用户体验。对于开发者而言,理解和使用这样的插件有助于提升网页的交互性和易用性。

    jQuery实现的360浏览器九宫格图片拖拽排序特效源码.zip

    3. **CSS定位**:为了实现拖拽效果,需要改变图片元素的`position`属性为`absolute`或`relative`,然后实时更新其`left`和`top`坐标,以跟随鼠标的移动。 4. **数据存储**:在拖拽过程中,需要记录当前被拖动图片的...

    可拖动的JQ JModal弹窗源码.

    同时,为了提供更好的视觉反馈,拖动过程中会显示一个等宽高的虚框,这个虚框随着鼠标的移动而移动,使得用户可以直观地看到弹窗将要移动到的位置。 实现这一效果可能涉及到以下几个步骤: 1. **初始化**:在页面...

    jQuery实现的可拖拉的炉石飞行卡动画特效源码.zip

    在这个项目中,jQuery被用来创建一个交互式的、可拖动的卡片元素,当用户释放鼠标时,卡片会以平滑的动画效果飞入指定位置,模拟炉石传说游戏中的卡牌飞行动作。 首先,理解jQuery的DOM操作是关键。在实现拖拽功能...

    JavaScript 拖拉缩放效果 -源码.zip

    2. `drag`事件处理函数:根据鼠标的移动计算元素的新位置,并更新元素的位置。 3. `dragend`事件处理函数:拖动结束后,可能需要执行一些清理工作,比如重置拖动状态。 4. `dblclick`事件处理函数:双击事件触发时,...

    jquery图片标注插件增强.zip

    本项目聚焦于一个特定的需求——"jquery图片标注插件增强",这涉及到使用JavaScript库,尤其是jQuery,来实现对图片的标注功能,以便记录图片上的水印位置。以下是对这个主题的详细阐述: 首先,`cropper`是一个...

    jQuery自由拖拽图片点击展开特效.rar

    在`mousedown`事件中记录初始位置,在`mousemove`事件中更新图片位置,`mouseup`事件则停止移动。 4. **CSS样式控制**:CSS用于定义元素的外观和布局,包括图片的初始位置、大小和透明度等。在点击展开特效中,可能...

    类似google可拖动个性页面demo

    本项目“类似google可拖动个性页面demo”旨在实现一个与Google类似的交互式界面,用户可以通过拖动来调整页面元素的位置,打造个性化的布局。这样的功能常见于桌面应用、网页设置以及某些定制化服务的平台。 首先,...

    页面拖拽功能

    标题中的“页面拖拽功能”指的是在Web应用中实现用户可以通过鼠标拖动页面元素来执行特定操作的技术。这种功能常见于各种网页编辑器、富文本编辑器以及某些交互式应用中,增强了用户的交互体验。 在描述中提到的...

    jQuery页面右下角浮动窗口代码.zip

    《jQuery页面右下角浮动窗口实现详解》 在网页设计中,为了提升用户体验,有时我们需要在页面的右下角设置一个浮动窗口,用于显示通知、广告或者提供客服服务。jQuery作为一个强大的JavaScript库,提供了丰富的功能...

    jQuery可视化在线绘图工具代码

    2. **事件监听**:通过监听鼠标和触摸事件,捕捉用户的操作,实现图形的动态更新。 3. **布局算法**:对于复杂的图形,可能需要自动布局算法来优化节点的位置,使其看起来更加整洁有序。 4. **拖放功能**:利用HTML5...

    价格区间滑块

    在jQuery中,可以使用`$.on('mousedown', function() {...})`来监听鼠标按下事件,`$.on('mousemove', function() {...})`来处理鼠标移动,以及`$.on('mouseup', function() {...})`来响应鼠标释放。 3. **计算和...

Global site tag (gtag.js) - Google Analytics