jQuery九宫格布局图片拖动排序代码



173 690 231



特效描述:jQuery 九宫格布局 图片拖动排序,jQuery九宫格布局图片拖动排序代码

代码结构

1. 引入JS

<script src="js/jquery-1.8.3.min.js"></script>

2. HTML代码

<div class="item_container">
	<div class="item_content" id="imageChange">
		<ul>
			<li>
				<div class="item"> <img src="img/500x500-1.png" width="150" height="150"> 
				<span onClick="removePicture(this)" class="rmPicture close">×</span> </div>
			</li>
			<li>
				<div class="item"> <img src="img/500x500-2.png" width="150" height="150"> 
				<span onClick="removePicture(this)" class="rmPicture close">×</span> </div>
			</li>
			<li>
				<div class="item"> <img src="img/500x500-3.png" width="150" height="150"> 
				<span onClick="removePicture(this)" class="rmPicture close">×</span> </div>
			</li>
			<li>
				<div class="item"> <img src="img/500x500-4.png" width="150" height="150"> 
				<span onClick="removePicture(this)" class="rmPicture close">×</span> </div>
			</li>
			<li>
				<div class="item"> <img src="img/500x500-5.png" width="150" height="150"> 
				<span onClick="removePicture(this)" class="rmPicture close">×</span> </div>
			</li>
			<li>
				<div class="item"> <img src="img/500x500-6.png" width="150" height="150"> 
				<span onClick="removePicture(this)" class="rmPicture close">×</span> </div>
			</li>
			<li>
				<div class="item"> <img src="img/500x500-7.png" width="150" height="150"> 
				<span onClick="removePicture(this)" class="rmPicture close">×</span> </div>
			</li>
			<li>
				<div class="item"> <img src="img/500x500-8.png" width="150" height="150"> 
				<span onClick="removePicture(this)" class="rmPicture close">×</span> </div>
			</li>
			<li>
				<div class="item"> <img src="img/500x500-9.png" width="150" height="150"> 
				<span onClick="removePicture(this)" class="rmPicture close">×</span> </div>
			</li>
		</ul>
	</div>
</div>
<script>
/*
作者: 谢泽龙
联系QQ: 454675335 (灬丿Spam丶)
时间: 2014-9-24
*/
$(function() {
function Pointer(x, y) {
	this.x = x ;
	this.y = y ;
}
function Position(left, top) {
	this.left = left ;
	this.top = top ;
}
$(".item_container .item").each(function(i) {
	//$(".item_content .item").each(function(i) {	
	this.init = function() { // 初始化
		this.box = $(this).parent() ;
		$(this).attr("index", i).css({
			position : "absolute",
			left : this.box.offset().left,
			top : this.box.offset().top
		}).appendTo(".item_container") ;
		this.drag() ;
	},
	this.move = function(callback) {  // 移动
		$(this).stop(true).animate({
			left : this.box.offset().left,
			top : this.box.offset().top
		}, 500, function() {
			if(callback) {
				callback.call(this) ;
			}
		}) ;
	},
	this.collisionCheck = function() {
		var currentItem = this ;
		var direction = null ;
		$(this).siblings(".item").each(function() {
			if(
				currentItem.pointer.x > this.box.offset().left &&
				currentItem.pointer.y > this.box.offset().top &&
				(currentItem.pointer.x < this.box.offset().left + this.box.width()) &&
				(currentItem.pointer.y < this.box.offset().top + this.box.height())
			) {
				// 返回对象和方向
				if(currentItem.box.offset().top < this.box.offset().top) {
					direction = "down" ;
				} else if(currentItem.box.offset().top > this.box.offset().top) {
					direction = "up" ;
				} else {
					direction = "normal" ;
				}
				this.swap(currentItem, direction) ;
			}
		}) ;
	},
	this.swap = function(currentItem, direction) { // 交换位置
		if(this.moveing) return false ;
		var directions = {
			normal : function() {
				var saveBox = this.box ;
				this.box = currentItem.box ;
				currentItem.box = saveBox ;
				this.move() ;
				$(this).attr("index", this.box.index()) ;
				$(currentItem).attr("index", currentItem.box.index()) ;
			},
			down : function() {
				// 移到上方
				var box = this.box ;
				var node = this ;
				var startIndex = currentItem.box.index() ;
				var endIndex = node.box.index(); ;
				for(var i = endIndex; i > startIndex ; i--) {
					var prevNode = $(".item_container .item[index="+ (i - 1) +"]")[0] ;
					node.box = prevNode.box ;
					$(node).attr("index", node.box.index()) ;
					node.move() ;
					node = prevNode ;
				}
				currentItem.box = box ;
				$(currentItem).attr("index", box.index()) ;
			},
			up : function() {
				// 移到上方
				var box = this.box ;
				var node = this ;
				var startIndex = node.box.index() ;
				var endIndex = currentItem.box.index(); ;
				for(var i = startIndex; i < endIndex; i++) {
					var nextNode = $(".item_container .item[index="+ (i + 1) +"]")[0] ;
					node.box = nextNode.box ;
					$(node).attr("index", node.box.index()) ;
					node.move() ;
					node = nextNode ;
				}
				currentItem.box = box ;
				$(currentItem).attr("index", box.index()) ;
			}
		}
		directions[direction].call(this) ;
	},
	this.drag = function() { // 拖拽
		var oldPosition = new Position() ;
		var oldPointer = new Pointer() ;
		var isDrag = false ;
		var currentItem = null ;
		$(this).mousedown(function(e) {
			e.preventDefault() ;
			oldPosition.left = $(this).position().left ;
			oldPosition.top =  $(this).position().top ;
			oldPointer.x = e.clientX ;
			oldPointer.y = e.clientY ;
			isDrag = true ;
			currentItem = this ;
		}) ;
		$(document).mousemove(function(e) {
			var currentPointer = new Pointer(e.clientX, e.clientY) ;
			if(!isDrag) return false ;
			$(currentItem).css({
				"opacity" : "0.8",
				"z-index" : 999
			}) ;
			var left = currentPointer.x - oldPointer.x + oldPosition.left ;
			var top = currentPointer.y - oldPointer.y + oldPosition.top ;
			$(currentItem).css({
				left : left,
				top : top
			}) ;
			currentItem.pointer = currentPointer ;
			// 开始交换位置
			currentItem.collisionCheck() ;
		}) ;
		$(document).mouseup(function() {
			if(!isDrag) return false ;
			isDrag = false ;
			currentItem.move(function() {
				$(this).css({
					"opacity" : "1",
					"z-index" : 0
				}) ;
			}) ;
		}) ;
	}
	this.init() ;
}) ;
}) ;
</script>



用户评论
大牛,别默默的看了,快登录帮我点评一下吧!:)      登录 | 注册


热门标签: 图片延迟加载 图片延迟 图片加载 图片放大镜 头像上传 图片上传 图片叠加 图片层叠 图片拖动 图片拖拽 图片翻转 图片旋转 二维码 图片淡出淡进 图片淡出 图片淡进 图片全屏 图片放大缩小 图片缩放 图片大小 图片放大 图片缩小 图片变大 图片变小 h5图片动画 h5图标动画 html5图片动画 html5图标动画 带缩略图的幻灯片 图片广告 地图 中国地图 世界地图 纯图片轮播 图片轮播 拖动 拖拽 拖动插件 拖拽插件 旋转木马 图片旋转木马 文字旋转木马 旋转木马插件 图片收缩展开 图片收缩 图片展开 图片滚动 图片滚动条 图片切换 图片选项卡 图标选项卡 图片滑动 图片滑块 图标导航 图标菜单 自动滚动图片轮播 背景切换 大图切换 手风琴 水平手风琴 垂直手风琴 图片手风琴 文字手风琴 手风琴插件 图表 图片 图片插件 头像截图 拖动排序 拖拽排序 图片九宫格

×
×

注册

官方QQ群

扫描上面二维码加微信群

官方QQ群

jQuery/js讨论群
群号:642649996
Css3+Html5讨论群
群号:322131262

加群请备注:从官网了解到