手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >js模仿windows桌面图标排列算法具体实现(附图)
js模仿windows桌面图标排列算法具体实现(附图)
摘要:注:需要引入Jquery如果需要全部功能,请引入jquery-ui和jquery-ui.css截图:js代码:复制代码代码如下:$(func...

注:需要引入Jquery

如果需要全部功能,请引入jquery-ui和jquery-ui.css

截图:

1

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 rel="stylesheet" type="text/css" href="css/window.css">

<link rel="stylesheet" type="text/css" href="css/jquery-ui.css">

<script language="JavaScript" src="js/jquery-1.10.0.js"></script>

<script language="JavaScript" src="js/jquery-ui.js"></script>

<script language="JavaScript" src="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代码:

复制代码 代码如下:

@CHARSET "UTF-8";

body, html {

overflow: hidden;

height: 100%;

width: 100%;

margin: 0px;

padding: 0px;

}

.working {

height: 100%;

width: 100%;

background-image: url("../images/untitled.png");

background-repeat: no-repeat;

background-color: rgb(235, 236, 238);

padding: 20px;

}

.working ul {

height: 100%;

position: relative;

}

.working ul li {

position: absolute;

display: block;

width: 90px;

height: 90px;

text-align: center;

margin: 0px 10px 10px 10px;

float: left;

border: inherit 1px inherit;

overflow: hidden;

cursor: pointer;

}

.taskbar {

position: absolute;

height: 35px;

line-height: 35px;

width: 100%;

bottom: 0px;

background-color: #CCC;

z-index: 999;

filter: alpha(opacity = 80);

opacity: 0.8;

padding: 0px 10px;

}

.menu {

display: block;

width: 50px;

height: 30px;

float: left;

}

.menu-list {

position: absolute;

left: 0px;

bottom: 35px;

width: 350px;

height: 500px;

border: #CCC 1px solid;

background-color: white;

filter: alpha(opacity = 90);

opacity: 0.9;

border-radius: 5px;

display: none;

}

ul {

margin: 0px;

padding: 0px;

}

.menu-icon {

cursor: pointer;

}

.menu-icon ul li {

display: block;

width: 15px;

height: 15px;

float: left;

margin: 1px;

background-color: white;

border-radius: 3px;

}

.menu-icon:hover li {

background-color: red;

}

.icons li img {

max-height: 70px;

max-width: 90px;

}

.text {

position: static;

height: 20px;

line-height: 20px;

width: 100%;

margin: 0px;

font-size: 12px;

font-family: 微软雅黑;

color: white;

}

.icons-move {

border: rgb(161, 194, 219) 1px solid;

background-color: rgb(194, 208, 226);

filter: alpha(opacity = 60);

opacity: 0.6;

border-radius: 3px;

}

.icons-focus {

border: rgb(161, 194, 219) 1px solid;

background-color: rgb(194, 208, 226);

filter: alpha(opacity = 100);

opacity: 1;

border-radius: 3px;

}

.window {

height: 200px;

width: 200px;

border: #CCC 1px solid;

background-color: white;

border-radius: 5px;

position: absolute;

top: 0px;

z-index: 10;

}

/*

* 右键菜单

*/

.content-menu {

position: absolute;

width: 150px;

height: auto;

background-color: rgb(255, 255, 255);

border: #CCC 1px solid;

display: none;

border-radius:5px;

z-index:999;

}

.content-menu ul {

margin: 0px;

padding: 0px;

}

.content-menu ul li {

list-style: none;

line-height: 30px;

height: 30px;

margin: 3px 0px;

padding:0px;

font-size: 13px;

}

.content-menu ul li a{

text-decoration:none;

display:block;

font-family: 微软雅黑;

padding:0px 5px;

width:140px;

height:100%;

color: #333;

outline:none;

}

.content-menu ul li a:hover {

background-color: #DDD;

}

.content-menu ul hr {

margin: 1px 0px;

height: 0px;

border: 0px;

border-bottom: #CCC 1px solid;

}

【js模仿windows桌面图标排列算法具体实现(附图)】相关文章:

JavaScript中String.match()方法的使用详解

一个很简单的办法实现TD的加亮效果.

一个很简单的办法实现TD的加亮效果.

javascript中CheckBox全选终极方案

javascript实现动态改变层大小的方法

Javascipt中处理字符串之big()方法的使用

JavaScript实现列表分页功能特效

理解javascript的caller,callee,call,apply概念

如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)

客户端静态页面玩分页

精品推荐
分类导航