jquery 拖拽移动

demo:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>拖拽移动demo</title>
<script type="text/javascript" src="http://s0.ifengimg.com/static/js/jquery-1.7.2.min_c4de8813.js"></script>
<style>
*{padding:0; margin: 0;}
</style>
</head>

<body>
<div style="margin:0 auto; width: 500px; height: 300px; border: 1px solid #ff0000; position: relative;">
    <div style="position: absolute;" class="dragable">
        <img src="http://s0.ifengimg.com/2015/05/18/3c3b77e548648bb98b2bab65fe2170ee.jpg">
    </div>

</div>
<script src="DragMove.js"></script>
<script>
$(function(){
    var drag = new DragMove();
    drag.init();
});
</script>
</body>
</html>

js:

function DragMove(){
	this.dragElements = null;
	this.X = null;
	this.Y = null;
	this.moveX = null;
	this.moveY = null;
	this.moveTag = null;
	this.dragParentWidth = null;
	this.dragParentHeight = null;
	this.dragParentLeft = null;
	this.dragParentTop = null;
	this.dragWidth = null;
	this.dragHeight = null;
}
DragMove.prototype = {
	init: function(){
		this.dragElements = $(".dragable");
		this.bind();
	},
	bind: function(){
		var me = this;
		me.dragElements.on("mousedown", function(e){
			e.preventDefault();
			var tgt = me.getTarget(e);
			me.moveTag = true;
			me.dragWidth = tgt.width();
			me.dragHeight = tgt.height();
			me.dragParentWidth = tgt.offsetParent().width();
			me.dragParentHeight = tgt.offsetParent().height();
			me.dragParentLeft = tgt.offsetParent().offset().left;
			me.dragParentTop = tgt.offsetParent().offset().top;
		});
		me.dragElements.on("mousemove", function(e){
			e.preventDefault();
			if( me.moveTag ){
				var tgt = me.getTarget(e);
				me.moveX = e.pageX;
				me.moveY = e.pageY;
				me.X = me.moveX - me.dragParentLeft - me.dragWidth / 2;
				me.Y = me.moveY - me.dragParentTop - me.dragHeight / 2;
				if( me.X <= 0 ) me.X = 0;
				if( me.X >= me.dragParentWidth - me.dragWidth ) me.X = me.dragParentWidth - me.dragWidth;
				if( me.Y <= 0 ) me.Y = 0;
				if( me.Y >= me.dragParentHeight - me.dragHeight ) me.Y = me.dragParentHeight - me.dragHeight;
				tgt.css({
					"left": me.X + "px",
					"top": me.Y + "px"
				});
			}
		});
		me.dragElements.on("mouseup", function(e){
			e.preventDefault();
			me.moveTag = false;
		});
	},
	getTarget: function(e){
		if(!$(e.target).hasClass("dragable")){
			return $(e.target).parent(".dragable");
		}else{
			return $(e.target);
		}
	}
};

  

  

时间: 2024-10-29 09:35:29

jquery 拖拽移动的相关文章

jQuery拖拽插件制作拖拽排序特效

基于jQuery拖拽插件制作拖拽排序特效是一款非常实用的鼠标拖拽布局插件.效果图如下: 在线预览   源码下载 实现的代码. html代码: <h1>水平拖拽</h1> <div class="demo"> <div class="item item1"><span>1</span></div> <div class="item item2"><

JQUERY 拖拽 draggable droppable resizable selectable sortable

今天用了jq ui的拖动碰撞功能,好不容易看到有详细的API解说,记录如下: <script language="JavaScript" type="text/javascript" src="ui/jquery-1.8.2.js"></script> <script language="JavaScript" type="text/javascript" src="

jquery -- 拖拽排序分析

今天应一个朋友的委托,研究一下拖拽排序,我记得我上次写拖拽排序,因为方法太死板,效果我一直不是很满意,一直想再从写一个,一直没机会(懒),这次因为公司部门变动所以有了一些时间(无聊)来写,本来准备使用Vue写,奈何功夫不到家在自定义指令的时候,问题卡住了,研究了一段时间之后,还是决定放弃,研究一下Vue再来写过,所以本次还是用了Jquery来写. 直接上代码 这是CSS部分 1 *{/*Css*/ 2 margin: 0px; 3 padding: 0px; 4 list-style: none

jquery 拖拽变换位置

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>测试</title><style>.item_content ul { list-style: none; }.item_content ul li { width: 200px; height: 160px; float: left; margin: 10px }.item_content

JQuery拖拽改变元素的尺寸

"元素拖拽改变大小"其实和"元素拖拽"一个原理,只是所动态改变的对象不同而已,主要在于 top.left.width.height 的运用,相对实现起来也非常容易.以下附出源码原型,弄明白了原理再扩展其他实际应用,思路就变得简单.清晰得多了.先来看看效果:塔河县臧清机械 下面是 JavaScript Code view source print? 01 <script type="text/javascript"> 02     /*

jquery拖拽效果

<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>jQuery UI 拖动(Draggable) + 排序(Sortable)</title> <link rel="stylesheet" href="//apps.bdimg.com/libs/jqueryui/1.10.4

jQuery拖拽小插件

基本实现思路是利用了onmousedown,onmouseup,onmousemove三种事件和css中的绝对定位 插件功能: 1.设置拖拽热点 2.设置被拖拽对象 3.设置拖拽范围 默认情况下,拖拽热点和被拖拽对象是同一个元素,拖拽范围是文档窗口 jQuery代码 (function($){ $.fn.drag=function(opts){ var defaults={ dragObj:$(this), scope:{ left:0, top:0, right:$(document).wid

jquery拖拽插件Easydrag

在一些有弹出框的页面,会经常用到拖拽效果来增加用户体验,避免因弹出框遮挡一些元素.如果用原生的js来写的话,js兼容性很不好控制,经常由于浏览器事件的不统一而影响效果,今天给大家介绍一个拖拽插件easydrag,EasyDrag可以指定可拖动的区域,一个setHandler搞定,不错开源是个好东西,只需要一行代码便可轻松在主流浏览器上 使用方法示例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q

jQuery拖拽

PC 端拖拽 function drag() { var _move = false; var _x, _y; $(".drag").click(function() { console.log($(".drag>g").css("display")); }).mousedown(function(e) { _move = true; _x = e.pageX - parseInt($(".drag").css(&quo

jquery拖拽(最浅显易懂的分析)

如何实现一个可以拖拽的div? 其实很简单,我们捋清思路,很快便能实现. 首先div的拖拽,如果把div当作一件物品,我们拖拽的时候是因为手抓住了这件物品,因此我们走到哪里,东西就到了哪里. 但是鼠标是没有办法抓住div的,写代码不会那么直来直去,有时候像魔术,需要使用一些障眼法,使最终看起来达到了效果. 抛开过程不谈,只看结果,拖拽实现的最终效果是,鼠标到哪里,div就跟到哪里. 知道了这一点,那就继续分析,这不就是位移的问题嘛.你往前走1m,我就往前走1m,你往后退多少我也往后退多少,上下左