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 相关文章推荐
js判断IE浏览器版本过低示例代码
Nov 22 Javascript
如何改进javascript代码的性能
Apr 02 Javascript
javascript十六进制及二进制转化的方法
May 06 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
Jul 06 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
Dec 10 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
Feb 10 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
Mar 10 Javascript
在React中如何优雅的处理事件响应详解
Jul 24 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
Aug 07 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
Sep 24 Javascript
Vue 解决多级动态面包屑导航的问题
Nov 04 Javascript
vue更改数组中的值实例代码详解
Feb 07 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
一个php作的文本留言本的例子(六)
2006/10/09 PHP
扩展你的 PHP 之入门篇
2006/12/04 PHP
PHP操作数组的一些函数整理介绍
2011/07/17 PHP
PHP中读写文件实现代码
2011/10/20 PHP
php页面缓存ob系列函数介绍
2012/10/18 PHP
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
destoon实现调用热门关键字的方法
2014/07/15 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
jQuery对象的selector属性用法实例
2014/12/27 Javascript
JavaScript中用let语句声明作用域的用法讲解
2016/05/20 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
vue2中filter()的实现代码
2017/07/09 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
微信小程序实现随机验证码功能
2018/12/20 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
Linux下python3.7.0安装教程
2018/07/30 Python
Python2与Python3的区别实例总结
2019/04/17 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
以下的初始化有什么区别
2013/12/16 面试题
20岁生日感言
2014/01/13 职场文书
留学推荐信中文范文三篇
2014/01/25 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
2015年教师新年寄语
2014/12/08 职场文书
五年级学生期末评语
2014/12/26 职场文书
亮剑观后感600字
2015/06/05 职场文书
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android