jquery 3D球状导航的文章分类


Posted in Javascript onJuly 06, 2010

前几天写了左边这个3D球状导航的文章分类,这里对实现细节做个简单记录。

效果:
分类标题呈现3D球状效果,点击分类标题的时候,会弹出这个分类对应的推荐文章列表。
效果截图:
jquery 3D球状导航的文章分类

jquery 3D球状导航的文章分类

HTML:

<div id="mainList"> 
<div id="list"> 
<ul> 
<li><a class="HTML" onclick="ClickLink(this)" href="#">HTML</a></li> 
<li><a class="CSS" onclick="ClickLink(this)" href="#">CSS</a></li> 
<li><a class="JS" onclick="ClickLink(this)" href="#">JavaScript</a></li> 
<li><a class="AJAX" onclick="ClickLink(this)" href="#">Ajax</a></li> 
<li><a class="ASPNET" onclick="ClickLink(this)" href="#">Asp.net</a></li> 
<li><a class="CSHARP" onclick="ClickLink(this)" href="#">C#</a></li> 
<li><a class="DEBUG" onclick="ClickLink(this)" href="#">Debugging</a></li> 
<li><a class="PERF" onclick="ClickLink(this)" href="#">Performance</a></li> 
<li><a class="ARCHITERT" onclick="ClickLink(this)" href="#">Architect</a></li> 
</ul> 
</div>

核心JS:动态生成3D球状云+弹出模式窗体-articlemap.js
$(function() { 
var element = $('#list a'); ; 
var offset = 0; 
var stepping = 0.02; 
var list = $('#list'); 
var $list = $(list) 
$list.mousemove(function(e) { 
var topOfList = $list.eq(0).offset().top 
var listHeight = $list.height() 
stepping = (e.clientY - topOfList) / listHeight * 0.2 - 0.1; 
}); 
for (var i = element.length - 1; i >= 0; i--) { 
element[i].elemAngle = i * Math.PI * 2 / element.length; 
} 
setInterval(render, 50); 
function render() { 
for (var i = element.length - 1; i >= 0; i--) { 
var angle = element[i].elemAngle + offset; 
x = 120 + Math.sin(angle) * 30; 
y = 45 + Math.cos(angle) * 40; 
size = Math.round(15 - Math.sin(angle) * 15); 
var elementCenter = $(element[i]).width() / 2; 
var leftValue = (($list.width() / 2) * x / 100 - elementCenter) + "px" 
$(element[i]).css("fontSize", size + "pt"); 
$(element[i]).css("opacity", size / 100); 
$(element[i]).css("zIndex", size); 
$(element[i]).css("left", leftValue); 
$(element[i]).css("top", y + "%"); 
} 
offset += stepping; 
} 
}); 
function ClickLink(item) { 
var typName = $(item).text(); 
var links = null; 
switch (typName) { 
case "HTML": 
links = TrainLinks(Links.HTML); 
break; 
case "CSS": 
links = TrainLinks(Links.CSS); 
break; 
case "JavaScript": 
links = TrainLinks(Links.JavaScript); 
break; 
case "Ajax": 
links = TrainLinks(Links.Ajax); 
break; 
case "Asp.net": 
links = TrainLinks(Links.Aspnet); 
break; 
case "C#": 
links = TrainLinks(Links.CSharp); 
break; 
case "Debugging": 
links = TrainLinks(Links.Debugging); 
break; 
case "Performance": 
links = TrainLinks(Links.Performance); 
break; 
case "Architect": 
links = TrainLinks(Links.Architect); 
break; 
} 
CommonHelper.showNoBtnAlert(typName, links); 
} 
function TrainLinks(arr) { 
var links = "这个可以有,暂时还没有!"; 
if (arr.length > 0) { 
links = '<div><ul>'; 
} 
for (i = 0, j = arr.length; i < j; i++) { 
links += '<li><a target="_blank" href="' + arr[i][0] + '">' + arr[i][1] + '</a></li>'; 
} 
if (arr.length > 0) { 
links += '</ul></div>'; 
} 
return links; 
}

辅助存储推荐文章列表的JS(未来通过修改这个文件来维护推荐文章):
var Links = { 
HTML: [], 
CSS: [["http://www.cnblogs.com/justinw/archive/2010/06/16/1758922.html", "制作50个超棒动画效果教程"]], 
JavaScript: [ 
["http://www.cnblogs.com/justinw/archive/2009/11/27/1611728.html", "[原创]AjaxControlToolkitTests自动测试框架完全解析之一:架构篇 "], 
["http://www.cnblogs.com/justinw/archive/2009/11/30/1613391.html", "[原创]AjaxControlToolkitTests自动测试框架完全解析之二:实现篇(1) "], 
["http://www.cnblogs.com/justinw/archive/2009/12/02/1615382.html", "[JavaScript] 使用document.createDocumentFragment优化性能 "], 
], 
Ajax: [], 
Aspnet: [], 
CSharp: [], 
...... 
Performance: [ 
["http://www.cnblogs.com/justinw/archive/2009/11/26/1611397.html", "[推荐]前端性能分析工具:dynaTrace Ajax Edition"] 
] 
}

其他:
这里还引用了jQuery UI的Dialog和一些自定义的CSS设置,具体参考实例即可。
下载源代码
Javascript 相关文章推荐
Javascript 表单之间的数据传递代码
Dec 04 Javascript
IE DOM实现存在的部分问题及解决方法
Jul 25 Javascript
js清空表单数据的两种方式(遍历+reset)
Jul 18 Javascript
javascript工厂方式定义对象
Dec 26 Javascript
js实现向右横向滑出的二级菜单效果
Aug 27 Javascript
基于JS实现数字+字母+中文的混合排序方法
Jun 06 Javascript
详解js实现线段交点的三种算法
Aug 09 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
Apr 27 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
Oct 10 Javascript
node实现的爬虫功能示例
May 04 Javascript
实例分析vue循环列表动态数据的处理方法
Sep 28 Javascript
vue+Element-ui前端实现分页效果
Nov 15 Javascript
Javascript Function对象扩展之延时执行函数
Jul 06 #Javascript
JavaScript经典效果集锦
Jul 06 #Javascript
前端开发必须知道的JS之原型和继承
Jul 06 #Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
Jul 06 #Javascript
一个基于jquery的图片切换效果
Jul 06 #Javascript
jQuery ajax BUG:object doesn't support this property or method
Jul 06 #Javascript
防止页面被iframe(兼容IE,Firefox火狐)
Jul 04 #Javascript
You might like
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
PHP编译configure时常见错误的总结
2017/08/17 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
firebug的一个有趣现象介绍
2011/11/30 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
深入理解jQuery.data() 的实现方式
2016/11/30 Javascript
jQuery第一次运行页面默认触发点击事件的实例
2018/01/10 jQuery
create-react-app修改为多页面支持的方法
2018/05/17 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
Python中的异常处理简明介绍
2015/04/13 Python
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
numpy中的meshgrid函数的使用
2019/07/31 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
keras 读取多标签图像数据方式
2020/06/12 Python
使用python实现学生信息管理系统
2021/02/25 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
维德科技C#面试题笔试题
2015/12/09 面试题
幼儿园教师辞职信
2014/01/18 职场文书
应届毕业生简历自我评价
2014/01/31 职场文书
新春文艺演出主持词
2014/03/27 职场文书
公司节能减排方案
2014/05/16 职场文书
平安建设工作方案
2014/06/02 职场文书
爱心募捐感谢信
2015/01/22 职场文书
重阳节主题班会
2015/08/17 职场文书
《我的美好婚事》动画化决定纪念插画与先导PV公开
2022/04/06 日漫
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS