jQuery图片列表拖拽排序布局插件

jQuery图片列表拖拽排序布局插件

添加时间:2021-03-10 02:55:39
站长推荐丨赞助论坛,可获取海量资源终身免费下载权限奥!
举报 举报
收藏
预览
附件 附件
  • 模板类型模板类型:图片墙
  • 模板颜色模板颜色:初级
  • 下载积分下载积分:28 米粒
  • 下载权限下载权限:

    赞助会员

一款jQuery图片列表拖拽排序布局的插件,可以拖动任意图片放到其他图片的位置,这样即可完成图片新的排序布局,功能相当的简洁明了,喜欢的童鞋请收下吧。

分类:图片代码 > 图片墙 难易:初级

页面的head部分,先简单设置好页面元素的样式,代码如下:

<style type="text/css">
* {margin:0; padding:0;list-style: none}
#ul1 {width:660px; position:relative; margin:10px auto;}
#ul1 li {width:200px; height:150px; float:left; list-style:none; margin:10px;}
#ul1 li:hover{ border-color: #9a9fa4; box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.85);}
#ul1 .active{ border:1px dashed red;}
</style>

接着引入一个move.js插件,并设置好页面加载后的鼠标拖放等的响应,代码如下:

<script type="text/javascript" src="js/move.js"></script>
<script type="text/javascript">
window.onload = function() {
	var oUl= document.getElementById("ul1");
	var aLi = oUl.getElementsByTagName("li");
	var disX = 0;
	var disY = 0;
	var minZindex = 1;
	var aPos =[];
	for(var i=0;i<aLi.length;i++){
		var t = aLi[i].offsetTop;
		var l = aLi[i].offsetLeft;
		aLi[i].style.top = t+"px";
		aLi[i].style.left = l+"px";
		aPos[i] = {left:l,top:t};
		aLi[i].index = i;
	}
	for(var i=0;i<aLi.length;i++){
		aLi[i].style.position = "absolute";
		aLi[i].style.margin = 0;
		setDrag(aLi[i]);
	}
	//拖拽
	function setDrag(obj){
		obj.onmouseover = function(){
			obj.style.cursor = "move";
		}
		obj.onmousedown = function(event){
			var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
			var scrollLeft = document.documentElement.scrollLeft||document.body.scrollLeft;
			obj.style.zIndex = minZindex++;
			//当鼠标按下时计算鼠标与拖拽对象的距离
			disX = event.clientX +scrollLeft-obj.offsetLeft;
			disY = event.clientY +scrollTop-obj.offsetTop;
			document.onmousemove=function(event){
				//当鼠标拖动时计算div的位置
				var l = event.clientX -disX +scrollLeft;
				var t = event.clientY -disY + scrollTop;
				obj.style.left = l + "px";
				obj.style.top = t + "px";
				/*for(var i=0;i<aLi.length;i++){
					aLi[i].className = "";
					if(obj==aLi[i])continue;//如果是自己则跳过自己不加红色虚线
					if(colTest(obj,aLi[i])){
						aLi[i].className = "active";
					}
				}*/
				for(var i=0;i<aLi.length;i++){
					aLi[i].className = "";
				}
				var oNear = findMin(obj);
				if(oNear){
					oNear.className = "active";
				}
			}
			document.onmouseup = function(){
				document.onmousemove = null;//当鼠标弹起时移出移动事件
				document.onmouseup = null;//移出up事件,清空内存
				//检测是否普碰上,在交换位置
				var oNear = findMin(obj);
				if(oNear){
					oNear.className = "";
					oNear.style.zIndex = minZindex++;
					obj.style.zIndex = minZindex++;
					startMove(oNear,aPos[obj.index]);
					startMove(obj,aPos[oNear.index]);
					//交换index
					oNear.index += obj.index;
					obj.index = oNear.index - obj.index;
					oNear.index = oNear.index - obj.index;
				}else{

					startMove(obj,aPos[obj.index]);
				}
			}
			clearInterval(obj.timer);
			return false;//低版本出现禁止符号
		}
	}
	//碰撞检测
	function colTest(obj1,obj2){
		var t1 = obj1.offsetTop;
		var r1 = obj1.offsetWidth+obj1.offsetLeft;
		var b1 = obj1.offsetHeight+obj1.offsetTop;
		var l1 = obj1.offsetLeft;

		var t2 = obj2.offsetTop;
		var r2 = obj2.offsetWidth+obj2.offsetLeft;
		var b2 = obj2.offsetHeight+obj2.offsetTop;
		var l2 = obj2.offsetLeft;

		if(t1>b2||r1<l2||b1<t2||l1>r2){
			return false;
		}else{
			return true;
		}
	}
	//勾股定理求距离
	function getDis(obj1,obj2){
		var a = obj1.offsetLeft-obj2.offsetLeft;
		var b = obj1.offsetTop-obj2.offsetTop;
		return Math.sqrt(Math.pow(a,2)+Math.pow(b,2));
	}
	//找到距离最近的
	function findMin(obj){
		var minDis = 999999999;
		var minIndex = -1;
		for(var i=0;i<aLi.length;i++){
			if(obj==aLi[i])continue;
			if(colTest(obj,aLi[i])){
				var dis = getDis(obj,aLi[i]);
				if(dis<minDis){
					minDis = dis;
					minIndex = i;
				}
			}
		}
		if(minIndex==-1){
			return null;
		}else{
			return aLi[minIndex];
		}
	}	
}
</script>

页面的body部分,仅需设置好一个图片列表即可,代码如下:

<ul id="ul1">
	<li><img src="images/1.png" width="200" height="150" /></li>
	<li><img src="images/2.png" width="200" height="150" /></li>
	<li><img src="images/3.png" width="200" height="150" /></li>
	<li><img src="images/4.png" width="200" height="150" /></li>
	<li><img src="images/5.png" width="200" height="150" /></li>
	<li><img src="images/6.png" width="200" height="150" /></li>
</ul>
相关内容推荐
资源求助发帖
查看更多发帖

*

回帖描述:

*

链接类型:

*

下载链接:

密码:
发帖规则:回帖内容为会员之间的私信,普通网友无法查看。
免责声明:回帖中提供的链接内容仅供会员之间学习参考使用,获取内容后请在法律法规范围内使用。回帖提供的内容应符合法律法规要求,不得违反法律法律的要求。
站点权责:回帖内容如违反法律法规,站点有权封停账号使用权利。对用户举报的内容,站点有责任及时删除违规内容。
热点内容推荐
标题:jQuery图片列表拖拽排序布局插件

*

描述:
平均回复时间:3-10分钟
规则介绍:悬赏寻求论坛网友分享资源,站点对分享内容的准确性,合法性,版权等没有足够的监管能力。如果您发现资源不正确,无法使用,不符合法律法律等情况,您可以直接举报资源。站长将尽快核实您的举报,并根据情况,采取封号,退换米粒等处理。

*

回帖描述:

*

链接类型:

*

阅读权限:

*

下载链接:

密码:
发帖规则:回帖内容为会员之间的私信,普通网友无法查看。
免责声明:回帖中提供的链接内容仅供会员之间学习参考使用,获取内容后请在法律法规范围内使用。回帖提供的内容应符合法律法规要求,不得违反法律法律的要求。
站点权责:回帖内容如违反法律法规,站点有权封停账号使用权利。对用户举报的内容,站点有责任及时删除违规内容。
  • 背景波浪
  • 背景波浪
  • 波浪
  • 波浪
客服
在线咨询
周一 至 周日 9:00 ~ 22:00
QQ:1326974360
微信:juyoubuluo6688
客服热线
18205485173
工作日 9:00 ~ 18:00
微信扫码咨询
客户服务
欢迎咨询服务
咨询量较多时,请耐心等待
社群

关注公众号

获取更多资讯

扫码进群(QQ)

与更多大牛交流沟通

0.239188s