纯Javascript实现Windows 8 Metro风格实现


Posted in Javascript onOctober 15, 2013

Metro风格设计主要特点

1.Windows 8 Metro风格设计,实现网站或系统功能的导航

2.纯Javascript实现

3.支持所有IE、360、Chrome等常用浏览器

4.支持圆角、阴影、卡片切换等特效

5.支持卡片的放大、缩小、增加、删除等功能

6.可自定义卡片背景色、背景图片、卡片图片、卡片文字

7.卡片间可任意切换

Metro风格截图
纯Javascript实现Windows 8 Metro风格实现 
Metro部分算法

卡片显示部分代码:

str='<li data-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:0 4px 10px rgba(0, 0, 0, .35); behavior: url('+imgBasePath+'js/ie.htc);" onMouseOver="showOption(this)" onMouseOut="hiddeOption(this)">'; 
str+='<div style="float:left;position:absolute;left:0px;top:0px;width: '+addwidth+'px; height: '+addheight+'px;background-color:orange;"></div>'; 
str+='<div style="float:left;position:absolute;left:0px;top:0px;width: '+addwidth+'px; height: '+addheight+'px;background-color:red;"></div>'; 
str+='</li>';

移动单元格JS脚本:
function moveItem(objid,indexList){ 
//判断是否有效移动. 
var curItem=getCurItem(objid); 
var curIndex=curItem.index; 
for(var i=0;i<indexList.length;i++){ 
var miIndex=parseInt(indexList[i]); 
if((curIndex+1)==miIndex&&(curIndex+1)%colSize==0){ 
alertInfo("最后一列不能调大!"); 
return false; 
} 
if(miIndex>=(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<itemArray.length;i++){ 
var tmpItem=itemArray[i]; 
var objvalue=tmpItem.value; 
if(itemvalueforspace==objvalue||itemvaluefornull==objvalue){ 
var isexitarea=false; 
for(var j=0;j<indexList.length;j++){ 
var miIndex=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("调大单元格已超出所显示区域!"); 
return false; 
} 
//调整移动单元格的队列. 
for(var i=0;i<indexList.length;i++){ 
var miIndex=parseInt(indexList[i]); 
var moveItem=itemArray[miIndex]; 
if(moveItem==undefined){//不存在. 
for(var j=itemArray.length;j<=miIndex;j++){ 
addNullItem(""); 
} 
moveItem=itemArray[miIndex]; 
} 
//undefined 
var moveValue=moveItem.value; 
moveItem.value=curItem.value; 
itemArray[miIndex]=moveItem; 
if(moveValue!=itemvalueforspace){//覆盖单元格中已有对象. 
//覆盖单元格移到最后 
var moveIndex=itemArray.length; 
var col=moveIndex%colSize; 
var row=(moveIndex-col)/colSize; 
var moveLeft=splitspace+col*(initwidth+splitspace); 
var moveTop=splitspace+row*(initheight+splitspace); 
var moveCacheItem=new Object(); 
moveCacheItem.index=moveIndex; 
moveCacheItem.id=itemPrefix+(moveIndex+1); 
moveCacheItem.x=moveLeft; 
moveCacheItem.y=moveTop; 
moveCacheItem.value=moveValue; 
itemArray.push(moveCacheItem); 
var moveObj=document.getElementById(moveValue); 
moveObj.style.top=moveTop+"px"; 
moveObj.style.left=moveLeft+"px"; 
}else{//null单元格,需要删除null单元格. 
//del(moveItem.id); 
} } 
//检查空缺单元格,如果存在,就填充null对象. 
for(var i=itemArray.length-1;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; 
}

待续……
Javascript 相关文章推荐
JS实现的省份级联实例代码
Jun 24 Javascript
IE浏览器下PNG相关功能
Jul 05 Javascript
JavaScript判断按钮被点击的方法
Dec 13 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
Aug 30 Javascript
Javascript动画效果(4)
Oct 11 Javascript
详解jQuery的表单验证插件--Validation
Dec 21 Javascript
js仿淘宝评价评分功能
Feb 28 Javascript
JavaScript之Canvas_动力节点Java学院整理
Jul 04 Javascript
JQuery Ajax动态加载Table数据的实例讲解
Aug 09 jQuery
ajax跨域访问遇到的问题及解决方案
May 23 Javascript
keep-alive保持组件状态的方法
Dec 02 Javascript
jquery插件实现图片悬浮
Apr 16 jQuery
自定义ExtJS控件之下拉树和下拉表格附源码
Oct 15 #Javascript
Javascript 实现的数独解题算法网页实例
Oct 15 #Javascript
高效的获取当前元素是父元素的第几个子元素
Oct 15 #Javascript
JS 实现点击a标签的时候让其背景更换
Oct 15 #Javascript
JS操作Cookies的小例子
Oct 15 #Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 #Javascript
JavaScript中prototype为对象添加属性的误区介绍
Oct 15 #Javascript
You might like
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
PHP array 的加法操作代码
2010/07/24 PHP
session在PHP大型web应用中的使用
2011/06/25 PHP
如何在PHP中使用数组
2020/06/09 PHP
JavaScript窗口功能指南之在窗口中书写内容
2006/07/21 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
JavaScript加强之自定义callback示例
2013/09/21 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
JavaScript中创建对象的模式汇总
2016/04/19 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
微信小程序 开发之顶部导航栏实例代码
2017/02/23 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
Python开发常用的一些开源Package分享
2015/02/14 Python
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
用Python写冒泡排序代码
2016/04/12 Python
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
使用Python实现简单的服务器功能
2017/08/25 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
Python 实现集合Set的示例
2020/12/21 Python
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
灵泰克Java笔试题
2016/01/09 面试题
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
小学生组织委员竞选稿
2015/11/21 职场文书