jQuery图片随机排序推拽代码

版权:原创 更新时间:1年以上
[该文章底部包含文件资源,可根据自己情况,决定是否下载资源使用,时间>金钱,如有需要,立即查看资源]

以下是 jQuery图片随机排序推拽代码 的示例演示效果:

当前平台(PC电脑)
  • 平台:

部分效果截图:

jQuery图片随机排序推拽代码

HTML代码(index.html):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery图片随机排序推拽代码</title>
<link href="css/zzsc.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="js/zzsc.js"></script>
</head>
<body>
<div class="box">
  <h2 class="title"><a href="javascript:;" class="order">随机排序</a></h2>
  <ul>
  </ul>
</div>
<div class="box">
  <h2 class="title"><a href="javascript:;" class="order">随机排序</a></h2>
  <ul>
  </ul>
</div>
</body>
</html>






JS代码(zzsc.js):

//获取IDvar $ = function (id){
	return typeof id === "string" ? document.getElementById(id):id}
;
	//获取tagNamevar $$ = function (tagName,oParent){
	return (oParent || document).getElementsByTagName(tagName)}
;
	//获取classvar $$$ = function (sClass,oParent){
	var aClass = [],i = 0,reClass = new RegExp("(\\s|^)" + sClass + "($|\\s)"),aElement = $$("*",oParent);
	for (i = 0;
	i < aElement.length;
	i++)reClass.test(aElement[i].className) && aClass.push(aElement[i]);
	return aClass}
;
	//获取元素位置function getPos(obj){
	var iTop = obj.offsetTop;
	var iLeft = obj.offsetLeft;
	while (obj.offsetParent){
	iTop += obj.offsetParent.offsetTop;
	iLeft += obj.offsetParent.offsetLeft;
	obj = obj.offsetParent;
}
return{
	top:iTop,left:iLeft}
}
;
	//创建照片墙对象var PhotoWall = function (){
	this.initialize.apply(this,arguments)}
;
	PhotoWall.prototype ={
	initialize:function (obj,aData){
	var oThis = this;
	this.oParent = $(obj);
	this.oUl = $$("ul",this.oParent)[0];
	this.oBtn = $$("a",this.oParent)[0];
	this.zIndex = 1;
	this.aPos = [];
	this.aData = aData;
	this.dom = document.documentElement || document.body;
	this.create();
	this.oBtn.onclick = function (){
	oThis.randomOrder()}
}
,create:function (){
	var aFrag = document.createDocumentFragment();
	var i = 0;
	for (i = 0;
	i < this.aData.length;
	i++){
	var oLi = document.createElement("li");
	var oImg = document.createElement("img");
	oImg.src = this.aData[i];
	oLi.appendChild(oImg);
	aFrag.appendChild(oLi)}
this.oUl.appendChild(aFrag);
	this.aLi = $$("li",this.oParent);
	this.changeLayout()}
,changeLayout:function (){
	var i = 0;
	this.oParent.style.height = this.oParent.offsetHeight - 2 + "px";
	this.aPos.length = 0;
	for (i = 0;
	i < this.aLi.length;
	i++) this.aLi[i].style.cssText = "";
	for (i = 0;
	i < this.aLi.length;
	i++){
	this.aLi[i].index = i;
	this.aLi[i].style.top = getPos(this.aLi[i]).top + "px";
	this.aLi[i].style.left = getPos(this.aLi[i]).left + "px";
	this.aPos.push({
	left:getPos(this.aLi[i]).left,top:getPos(this.aLi[i]).top}
)}
for (i = 0;
	i < this.aLi.length;
	i++){
	this.aLi[i].style.position = "absolute";
	this.aLi[i].style.margin = "0";
	this.drag(this.aLi[i])}
}
,drag:function (obj,handle){
	var oThis = this;
	var handle = handle || obj;
	handle.style.cursor = "move";
	handle.onmousedown = function (event){
	var event = event || window.event;
	var disX = event.clientX - this.offsetLeft;
	var disY = event.clientY - this.offsetTop;
	var oNear = null;
	handle.style.zIndex = oThis.zIndex++;
	document.onmousemove = function (event){
	var event = event || window.event;
	var iL = event.clientX - disX;
	var iT = event.clientY - disY;
	var maxL = Math.max(oThis.dom.clientWidth,oThis.dom.scrollWidth) - handle.offsetWidth;
	var maxT = Math.max(oThis.dom.clientHeight,oThis.dom.scrollHeight) - handle.offsetHeight;
	iL < 0 && (iL = 0);
	iT < 0 && (iT = 0);
	iL > maxL && (iL = maxL);
	iT > maxT && (iT = maxT);
	handle.style.left = iL + "px";
	handle.style.top = iT + "px";
	oNear = oThis.findNearest(obj);
	for (var i = 0;
	i < oThis.aLi.length;
	i++) oThis.aLi[i].className = "";
	oNear && (oNear.className = "hig");
	return false}
;
	document.onmouseup = function (){
	document.onmousemove = null;
	document.onmouseup = null;
	if (oNear){
	handle.index = [handle.index,oNear.index];
	oNear.index = handle.index[0];
	handle.index = handle.index[1];
	oNear.style.zIndex = oThis.zIndex++;
	oThis.doMove(handle,oThis.aPos[handle.index]);
	oThis.doMove(oNear,oThis.aPos[oNear.index]);
	oNear.className = "";
}
else{
	oThis.doMove(handle,oThis.aPos[handle.index])}
handle.releaseCapture && handle.releaseCapture()}
;
	this.setCapture && this.setCapture();
	return false}
;
}
,doMove:function (obj,iTarget,callback){
	var oThis = this;
	clearInterval(obj.timer);
	obj.timer = setInterval(function (){
	var iCurL = getPos(obj).left;
	var iCurT = getPos(obj).top;
	var iSpeedL = (iTarget.left - iCurL) / 5;
	var iSpeedT = (iTarget.top - iCurT) / 5;
	iSpeedL = iSpeedL > 0 ? Math.ceil(iSpeedL):Math.floor(iSpeedL);
	iSpeedT = iSpeedT > 0 ? Math.ceil(iSpeedT):Math.floor(iSpeedT);
	if (iCurL == iTarget.left && iCurT == iTarget.top){
	clearInterval(obj.timer);
	callback && callback()}
else{
	obj.style.left = iCurL + iSpeedL + "px";
	obj.style.top = iCurT + iSpeedT + "px"}
}
,30)}
,findNearest:function (obj){
	var aDistance = [];
	var i = 0;
	for (i = 0;
	i < this.aLi.length;
	i++) aDistance[i] = this.aLi[i] == obj ? Number.MAX_VALUE:this.getDistance(obj,this.aLi[i]);
	var minNum = Number.MAX_VALUE;
	var minIndex = -1;
	for (i = 0;
	i < aDistance.length;
	i++) aDistance[i] < minNum && (minNum = aDistance[i],minIndex = i);
	return this.isButt(obj,this.aLi[minIndex]) ? this.aLi[minIndex]:null}
,getDistance:function(obj1,obj2){
	var a = (obj1.offsetLeft + obj1.offsetWidth / 2) - (obj2.offsetLeft + obj2.offsetWidth / 2);
	var b = (obj1.offsetTop + obj1.offsetTop / 2) - (obj2.offsetTop + obj2.offsetTop / 2);
	return Math.sqrt(a * a + b * b)}
,isButt:function (obj1,obj2){
	var l1 = obj1.offsetLeft;
	var t1 = obj1.offsetTop;
	var r1 = l1 + obj1.offsetWidth;
	var b1 = t1 + obj1.offsetHeight;
	var l2 = obj2.offsetLeft;
	var t2 = obj2.offsetTop;
	var r2 = l2 + obj2.offsetWidth;
	var b2 = t2 + obj2.offsetHeight;
	return !(r1 < l2 || b1 < t2 || r2 < l1 || b2 < t1)}
,randomOrder:function (){
	this.aPos.sort(function (){
	return Math.random() > 0.5 ? 1:-1}
);
	for (var i = 0;
	i < this.aLi.length;
	i++){
	this.aLi[i].index = i;
	this.doMove(this.aLi[i],this.aPos[i])}
}
}
;
	window.onload = function (){
	var aBox = $$$("box");
	var aData = [];
	var aExample = [];
	var i = 0;
	//生成图片数据for (i = 1;
	i < 9;
	i++) aData[aData.length] = "images/wall" + i + ".jpg";
	//循环创建多个实例for (i = 0;
	i < aBox.length;
	i++){
	var oExample = new PhotoWall(aBox[i],aData);
	aExample.push(oExample)}
this.onresize = function (){
	for (var p in aExample) aExample[p].changeLayout()}
;
	this.onresize()}
;
	

CSS代码(zzsc.css):

@charset "utf-8";body,div,h2,ul,li{margin:0;padding:0;}
body{font:12px/1.5 Arail;}
.box{width:860px;margin:10px auto;background:#eee;border:1px solid #b8b8b8;overflow:hidden}
.title{height:30px;line-height:30px;font-size:14px;padding:0 15px 0 35px;border-bottom:1px solid #b8b8b8;background:#fafafa;}
.title span{float:left;}
.title a{float:right;color:#06f;outline:none;}
.title a:hover{color:red;}
.box ul{float:left;padding:0 15px 15px 0;}
.box li{float:left;width:140px;height:105px;padding:6px;background:#fff;border:1px solid #c3c3c3;display:inline;margin:15px 0 0 15px;list-style:none;}
.box li img{float:left;width:140px;height:105px;}
.box li.hig{padding:5px;border:2px dashed #f30;opacity:0.5;filter:alpha(opacity=50);}
附件:下载该文件资源,减少时间成本(增值服务)
留言
该资源可下载
File Source
.rar
94.88 KB
Html JS 图片特效1
最新结算
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
HTML5实现CSS滤镜图片切换特效代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery+css3实现信封效果
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
我们力求给您提供有用的文章,再此基础上,会附加营收资源,不做任何广告,让平台可以更好发展 若您发现您的权利被侵害,或使用了您的版权,请发邮件联系 sunlifel@foxmail.com ggbig觉得 : 不提供源码的文章不是好文章
合作伙伴
联系我们
  • QQ:21499807
  • 邮箱:sunlifel@foxmail.com
  • QQ扫一扫加QQ
    QQ扫一扫
Copyright 2023-2024 ggbig.com·皖ICP备2023004211号-1
打赏文章