js模仿windows桌面图标排列算法具体实现(附图)

注:需要引入Jquery
如果需要全部功能,请引入jquery-ui和jquery-ui.css
截图:

js模仿windows桌面图标排列算法具体实现(附图)

 
js代码:

复制代码 代码如下:


$(function() {

//菜单列表
var menu_list=$(".menu-list");

//工作区
var working=$(".working");

working.click(function() {
menu_list.hide();
$(".content-menu").hide("slow");
});

//菜单图标单击
$(".menu").bind("click",function() {
menu_list.show();

});
arrange();

$(window).resize(function() {
arrange();
});

//屏蔽右键菜单
$(document).contextmenu(function() {
return false;
});

//点击工作区的时候 显示右键菜单
$(".working").contextmenu(function(event) {

var x=event.clientX;
var y=event.clientY;
var menu=$(".content-menu");

//判断坐标
var width=document.body.clientWidth;
var height=document.body.clientHeight;

x=(x+menu.width())>=width?width-menu.width():x;
y=(y+menu.height())>=height-40?height-menu.height():y;

//alert("可视高度:"+height+",鼠标高度:"+y);
menu.css("top",y);
menu.css("left",x);
menu.show();


});

//content-menu
$(".content-menu ul li").click(function() {
var text=$(this).text();

switch (text) {
case "刷新":
document.location.reload();
break;
case "退出登录":
if(confirm("是否要退出登录?")){

}
break;
default:
break;
}

$(".content-menu").hide();
});
});
//排列图标部分
function arrange(){
var ul=$(".icons");
var working=$(".working");
//位置坐标
var position={x:0,y:0,bottom:110,width:50,height:50,parent:{height:0,width:0},padding:{top:10,left:10,right:0,bottom:10}};

position.parent.height=working.height()-40;
position.parent.width=working.width();

ul.find("li").each(function(index) {

$(this).css("top",position.y+"px");
$(this).css("left",position.x+"px");

position.height=$(this).height();
position.width=$(this).width();

position.y=position.y+position.height+position.padding.bottom+position.padding.bottom;

if(position.y>=position.parent.height-position.bottom){
position.y=0;
position.x=position.x+position.width+position.padding.left;
}
});
}


html代码:

复制代码 代码如下:


<!DOCTYPE HTML PUBLIC "-//IETF//DTD LEVEL1//EN">
<html>
<head>
<title>index.html</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=GBK">
<link type="text/css" href="https://www.jb51.net/css/window.css">
<link type="text/css" href="https://www.jb51.net/css/jquery-ui.css">
<script language="JavaScript" src="https://www.jb51.net/js/jquery-1.10.0.js"></script>
<script language="JavaScript" src="https://www.jb51.net/js/jquery-ui.js"></script>
<script language="JavaScript" src="https://www.jb51.net/js/window.js"></script>
</head>
<body>

<div>

<ul>

<script>
for (var i = 1; i <= 4; i++) {
var html = "";
html += '<li>';
html += '<img src="images/'+i+'.gif">';
html += '<div>图标'+i+'</div>';
html += '</li>';
document.write(html);
}
</script>

</ul>

</div>


<div>
<div>
<ul>
<li></li>
</ul>
</div>

<div>

<div>
<ul><li></li><li></li><li></li><li></li></ul>
</div>

<a href="javascript:;"></a>
</div>

</div>

<div title="窗体">窗体</div>

<div>
<ul>
<li><a href="javascript:;">刷新</a></li>
<li><a href="javascript:;">设置</a></li>
<hr/>
<li><a href="javascript:;">帮助</a></li>
<hr/>
<li><a href="javascript:;">关于</a></li>
<hr/>
<li><a href="javascript:;">系统设置</a></li>
<li><a href="javascript:;">退出登录</a></li>
</ul>
</div>


<script>

$(".icons li").mousemove(function(){
$(this).addClass("icons-move");
});

$(".icons li").mouseout(function(){
$(this).removeClass("icons-move");
});

$(".icons li").mousedown(function(){
$(".icons li").removeClass("icons-focus");
$(this).addClass("icons-focus");
//改变当前的索引
$(".icons li").css("z-index",0);
$(this).css("z-index",1);
});

$(".icons li").dblclick(function(){
alert("double click");
});

//按键事件
$(document).keyup(function(event){
var UP=38;
var DOWM=40;
var ENTER=13;
var elem=$(".icons-focus");

if(elem.html()=="undefined")return;

if (event.keyCode == UP) {
$(".icons li").removeClass("icons-focus");
elem.prev().addClass("icons-focus");
}

if(event.keyCode==DOWM){
$(".icons li").removeClass("icons-focus");
elem.next().addClass("icons-focus");
}

//回车打开选中的图标
if(event.keyCode==ENTER){
var open=$(".icons-focus");
alert("ok enevt is enter");
}

});

//图标拖拽
$(".icons li").draggable();

//注册resize事件
$(".window").draggable({containment: 'parent'});
$(".window").resizable({containment: 'parent'});

</script>
</body>
</html>


CSS代码:

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdgdzy.html