原创地址:
Metro风格设计主要特点
1.Windows8Metro风格设计,实现网站或系统功能的导航
2.纯Javascript实现
3.支持所有IE、360、Chrome等常用浏览器
4.支持圆角、阴影、卡片切换等特效
5.支持卡片的放大、缩小、增加、删除等功能
6.可自定义卡片背景色、背景图片、卡片图片、卡片文字
7.卡片间可任意切换
Metro风格截图
Metro部分算法
卡片显示部分代码:
str='<lidata-mode="flip"id="'+itemID+'"data-sizex="1"data-sizey="1"class="stylediv2"style="float:left;left:'+left+'px;top:'+top+'px;width:'+addwidth+'px;height:'+addheight+'px;background-color:'+backColor+';position:absolute;z-index:2;cursor:pointer;border-radius:5px;box-shadow:04px10pxrgba(0,0,0,.35);behavior:url('+imgBasePath+'js/ie.htc);"onMouseOver="showOption(this)"onMouseOut="hiddeOption(this)">';
str+='<divstyle="float:left;position:absolute;left:0px;top:0px;width:'+addwidth+'px;height:'+addheight+'px;background-color:orange;"></div>';
str+='<divstyle="float:left;position:absolute;left:0px;top:0px;width:'+addwidth+'px;height:'+addheight+'px;background-color:red;"></div>';
str+='</li>';
str='
移动单元格JS脚本:
functionmoveItem(objid,indexList){
//判断是否有效移动.
varcurItem=getCurItem(objid);
varcurIndex=curItem.index;
for(vari=0;i<indexList.length;i++){
varmiIndex=parseInt(indexList[i]);
if((curIndex+1)==miIndex&&(curIndex+1)%colSize==0){
alertInfo("最后一列不能调大!");
returnfalse;
}
if(miIndex>=(rowSize*colSize)){
alertInfo("不能超过三行!");
returnfalse;
}
varcellnum=getItemCellNum(miIndex);
if(cellnum!=1){
alertInfo("被移动单元格目前只支持1个单元格!");
returnfalse;
}
}
//判断是否超过所规定显示区域
varnullnum=0;
varnullIndexArray=newArray();
for(vari=0;i<itemArray.length;i++){
vartmpItem=itemArray[i];
varobjvalue=tmpItem.value;
if(itemvalueforspace==objvalue||itemvaluefornull==objvalue){
varisexitarea=false;
for(varj=0;j<indexList.length;j++){
varmiIndex=parseInt(indexList[j]);
if(i==miIndex){
isexitarea=true;
break;
}
}
nullnum=nullnum+1;
if(!isexitarea){
nullIndexArray.push(i);
}
}
}
if((itemArray.length-nullnum+indexList.length)>(rowSize*colSize)){
alertInfo("调大单元格已超出所显示区域!");
returnfalse;
}
//调整移动单元格的队列.
for(vari=0;i<indexList.length;i++){
varmiIndex=parseInt(indexList[i]);
varmoveItem=itemArray[miIndex];
if(moveItem==undefined){
//不存在.for(varj=itemArray.length;j<=miIndex;j++){
addNullItem("");
}
moveItem=itemArray[miIndex];
}
//undefined
varmoveValue=moveItem.value;
moveItem.value=curItem.value;
itemArray[miIndex]=moveItem;
if(moveValue!=itemvalueforspace){
//覆盖单元格中已有对象.//覆盖单元格移到最后
varmoveIndex=itemArray.length;
varcol=moveIndex%colSize;
varrow=(moveIndex-col)/colSize;
varmoveLeft=splitspace+col*(initwidth+splitspace);
varmoveTop=splitspace+row*(initheight+splitspace);
varmoveCacheItem=newObject();
moveCacheItem.index=moveIndex;
moveCacheItem.id=itemPrefix+(moveIndex+1);
moveCacheItem.x=moveLeft;
moveCacheItem.y=moveTop;
moveCacheItem.value=moveValue;
itemArray.push(moveCacheItem);
varmoveObj=document.getElementById(moveValue);
moveObj.style.top=moveTop+"px";
moveObj.style.left=moveLeft+"px";
}else{
//null单元格,需要删除null单元格.//del(moveItem.id);
}
}
//检查空缺单元格,如果存在,就填充null对象.
for(vari=itemArray.length-1;i>=(rowSize*colSize);i--){
varmovitem=itemArray[i];
varnulitemIndex=nullIndexArray[nullIndexArray.length-1];
varnulitem=itemArray[nulitemIndex];
varmoveObj=document.getElementById(movitem.value);
//console.log("id="+movitem.id+"//value="+movitem.value+"//top="+nulitem.y+"//left="+nulitem.x);
moveObj.style.top=parseInt(nulitem.y)+"px";
moveObj.style.left=parseInt(nulitem.x)+"px";
//console.log("nullid="+nulitem.id+"//moveid="+movitem.id+"//value="+movitem.value+"//top="+nulitem.y+"//left="+nulitem.x);
getElement(sortablecurid).removeChild(getElement(nulitem.id));
nulitem.value=movitem.value;
itemArray[nulitemIndex]=nulitem;
itemArray.pop();
nullIndexArray.pop();
}
printItemArray();
returntrue;
}
function moveItem(objid,indexList){ //判断是否有效移动. var curItem=getCurItem(objid); var curIndex=curItem.index; for(var i=0;i待续……=(rowSize*colSize)){ alertInfo("不能超过三行!"); return false; } var cellnum=getItemCellNum(miIndex); if(cellnum!=1){ alertInfo("被移动单元格目前只支持1个单元格!"); return false; } } //判断是否超过所规定显示区域 var nullnum=0; var nullIndexArray=new Array(); for(var i=0;i (rowSize*colSize)){ alertInfo("调大单元格已超出所显示区域!"); return false; } //调整移动单元格的队列. for(var i=0;i =(rowSize*colSize);i--){ var movitem=itemArray[i]; var nulitemIndex=nullIndexArray[nullIndexArray.length-1]; var nulitem=itemArray[nulitemIndex]; var moveObj=document.getElementById(movitem.value); //console.log("id="+movitem.id+"//value="+movitem.value+"//top="+nulitem.y+"//left="+nulitem.x); moveObj.style.top=parseInt(nulitem.y)+"px"; moveObj.style.left=parseInt(nulitem.x)+"px"; //console.log("nullid="+nulitem.id+"//moveid="+movitem.id+"//value="+movitem.value+"//top="+nulitem.y+"//left="+nulitem.x); getElement(sortablecurid).removeChild(getElement(nulitem.id)); nulitem.value=movitem.value; itemArray[nulitemIndex]=nulitem; itemArray.pop(); nullIndexArray.pop(); } printItemArray(); return true;}