3D球状导航的文章分类


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

  效果:

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

  效果截图:

  HTML:

01 <div id="mainList"> 
02     <div id="list"> 
03         <ul> 
04             <li><a class="HTML" onclick="ClickLink(this)" href="#">HTML</a></li> 
05             <li><a class="CSS" onclick="ClickLink(this)" href="#">CSS</a></li> 
06             <li><a class="JS" onclick="ClickLink(this)" href="#">JavaScript</a></li> 
07             <li><a class="AJAX" onclick="ClickLink(this)" href="#">Ajax</a></li> 
08             <li><a class="ASPNET" onclick="ClickLink(this)" href="#">Asp.net</a></li> 
09             <li><a class="CSHARP" onclick="ClickLink(this)" href="#">C#</a></li> 
10             <li><a class="DEBUG" onclick="ClickLink(this)" href="#">Debugging</a></li> 
11             <li><a class="PERF" onclick="ClickLink(this)" href="#">Performance</a></li> 
12             <li><a class="ARCHITERT" onclick="ClickLink(this)" href="#">Architect</a></li> 
13         </ul> 
14     </div>  

 核心JS:动态生成3D球状云+弹出模式窗体-articlemap.js

01 $(function() { 
02   
03     var element = $('#list a'); ; 
04     var offset = 0; 
05     var stepping = 0.02; 
06     var list = $('#list'); 
07     var $list = $(list) 
08   
09     $list.mousemove(function(e) { 
10         var topOfList = $list.eq(0).offset().top 
11         var listHeight = $list.height() 
12         stepping = (e.clientY - topOfList) / listHeight * 0.2 - 0.1; 
13   
14     }); 
15   
16     for (var i = element.length - 1; i >= 0; i--) { 
17         element[i].elemAngle = i * Math.PI * 2 / element.length; 
18     } 
19   
20     setInterval(render, 50); 
21   
22     function render() { 
23         for (var i = element.length - 1; i >= 0; i--) { 
24   
25             var angle = element[i].elemAngle + offset; 
26   
27             x = 120 + Math.sin(angle) * 30; 
28             y = 45 + Math.cos(angle) * 40; 
29             size = Math.round(15 - Math.sin(angle) * 15); 
30   
31             var elementCenter = $(element[i]).width() / 2; 
32   
33             var leftValue = (($list.width() / 2) * x / 100 - elementCenter) + "px" 
34   
35             $(element[i]).css("fontSize", size + "pt"); 
36             $(element[i]).css("opacity", size / 100); 
37             $(element[i]).css("zIndex", size); 
38             $(element[i]).css("left", leftValue); 
39             $(element[i]).css("top", y + "%"); 
40         } 
41   
42         offset += stepping; 
43     } 
44   
45 }); 
46   
47 function ClickLink(item) { 
48     var typName = $(item).text(); 
49   
50     var links = null; 
51   
52     switch (typName) { 
53         case "HTML": 
54             links = TrainLinks(Links.HTML); 
55             break; 
56         case "CSS": 
57             links = TrainLinks(Links.CSS); 
58             break; 
59         case "JavaScript": 
60             links = TrainLinks(Links.JavaScript); 
61             break; 
62         case "Ajax": 
63             links = TrainLinks(Links.Ajax); 
64             break; 
65         case "Asp.net": 
66             links = TrainLinks(Links.Aspnet); 
67             break; 
68         case "C#": 
69             links = TrainLinks(Links.CSharp); 
70             break; 
71         case "Debugging": 
72             links = TrainLinks(Links.Debugging); 
73             break; 
74         case "Performance": 
75             links = TrainLinks(Links.Performance); 
76             break; 
77         case "Architect": 
78             links = TrainLinks(Links.Architect); 
79             break; 
80     } 
81   
82     CommonHelper.showNoBtnAlert(typName, links); 
83 } 
84   
85 function TrainLinks(arr) { 
86     var links = "这个可以有,暂时还没有!"; 
87     if (arr.length > 0) { 
88         links = '<div><ul>'; 
89     } 
90     for (i = 0, j = arr.length; i < j; i++) { 
91         links += '<li><a target="_blank" href="' + arr[i][0] + '">' + arr[i][1] + '</a></li>'; 
92     } 
93     if (arr.length > 0) { 
94         links += '</ul></div>'; 
95     } 
96   
97     return links; 
98 } 


  辅助存储推荐文章列表的JS(未来通过修改这个文件来维护推荐文章):

01 var Links = { 
02     HTML: [], 
03     CSS: [["http://www.cnblogs.com/justinw/archive/2010/06/16/1758922.html", "制作50个超棒动画效果教程"]], 
04     JavaScript: [ 
05     ["http://www.cnblogs.com/justinw/archive/2009/11/27/1611728.html", "[原创]AjaxControlToolkitTests自动测试框架完全解析之一:架构篇 "], 
06     ["http://www.cnblogs.com/justinw/archive/2009/11/30/1613391.html", "[原创]AjaxControlToolkitTests自动测试框架完全解析之二:实现篇(1) "], 
07     ["http://www.cnblogs.com/justinw/archive/2009/12/02/1615382.html", "[JavaScript] 使用document.createDocumentFragment优化性能 "], 
08     ], 
09     Ajax: [], 
10     Aspnet: [], 
11     CSharp: [], 
12     ...... 
13     Performance: [ 
14     ["http://www.cnblogs.com/justinw/archive/2009/11/26/1611397.html", "[推荐]前端性能分析工具:dynaTrace Ajax Edition"] 
15     ] 
16 } 

  其他:

  这里还引用了jQuery UI的Dialog和一些自定义的CSS设置,具体参考实例即可
本文示例源代码或素材下载


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3