Chase Down My Dream

Life, Dream

  • Home
  • About
  • Sample Page
Twitter Facebook Sina RSS

Micolog Tag Cloud jQuery 3D版

Posted on September 3, 2009 by stingrey
7 CommentsLeave a comment

Capture1 话说Tag Cloud的flash版,浮云是浮云,可是由于flash的先天因素,必然导致页面加载很慢。当时移植flash Tag Cloud的时候也恰巧看见了一篇很有意思的文章 Exploring 3D in Flash,讲述如何呈现3D效果,估摸着可以用jQuery之类的实现一下。同样对jQuery已经生疏了,只能边搜资料边写写看。折腾了半天,实现了右边贴图的效果。很神奇,正在头痛如何优化时,发现了比较类似的实现:
How to Create a 3D Tag Cloud in jQuery 。剩下来就是弄到Micolog上的事情了。

讲讲在Micolog上怎么弄吧,其实就是把jQuery的脚本加到Tag输出那一段,稍微改一下样式就可以了。

显然是在sidebar.html中修改:

<li>	<h2>Tags</h2>	<div id="jTag"> <---添加id	{% if tags %}	{% for t in tags %}		<a title="{{ t.tagcount }} topics" href="/tag/{{t.tag|urlencode}}"                  id="{{ t.tagcount|tagsize }}">{{t.tag}}</a> <---这里也改一下	{% endfor %}	{% endif %}	</div>

# 添加js脚本<script type="text/javascript">$(document).ready(function(){		var element = $('#jTag a');	var offset = 0; 	var stepping = 0.01;	var list = $('#jTag');	var $list = $(list);	$list.mousemove(function(e){		var topOfList = $list.eq(0).offset().top;		var listHeight = $list.height();		var adjustH = 360; <---这个要根据页面实际情况调,主要就是让                var x=0.5;  <---这个值主要是用来调整旋转速度的,越大越快		step = (e.clientY + adjustH - topOfList)/listHeight * 2 * x - x;	});	for (var i = element.length - 1; i >= 0; i--)	{		element[i].elemAngle = i * Math.PI * 2 / element.length;	}	setInterval(render, 200);	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(6 - Math.sin(angle) * 6) +                                  element[i].getAttribute("id")/2; <--- 获取popular程度			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-6)/10);			$(element[i]).css("zIndex" ,size);			$(element[i]).css("left" ,leftValue);			$(element[i]).css("top", y + "%");		}			offset += step;	}});</script></li>

在style.css中添加显示Tag Cloud的样式:

#jTag {         font-family: Monospace, "宋体", sans-serif;        margin:0 auto;	height:216px;       	width:186px; <---高、宽参数根据实际显示效果调,会对脚本中adjustH有影响        overflow:hidden;	position:relative;	background-color: trans;}#jTag a{	list-style:none;	margin:0;	padding:0;	position:absolute;	text-decoration: none;	color:#666;}#jTag a:hover{	color:#ccc;}

要把base.py中的tag输出个数调整一下,大概12~16个比较好。差点忘了,最好去http://ajax.googleapis.com/更新一个最新的jQuery.min.js。

这样就能让Tag Cloud动起来了。脚本基本就是在现成基础上改的,修改参数挺崩溃的,一开始传到网页上去发现只能往一个时针方向转,而且怎么也停不下来。当时调试了很久不知道怎么解决,在本地都是很正常的。昨晚看调试输出的时候,发现网页上获得的e.clientY值是相对的,于是导致了step这个值一直是负值,所以就总是朝一个方向转了。偷懒没有写支持IE的部分。。。这个版本自然比flash轻巧,能根据Popular程度不同改变Tag大小和透明度。

Categories: Micolog | Tags: jQuery, Tag Cloud
天气忽冷忽热~
Micolog Tag Cloud Flash版

7 Responses to “Micolog Tag Cloud jQuery 3D版”

  1. hzqtc says:
    September 3, 2009 at 14:32

    看来我的adblock blacklist要多一个item了

    Reply
  2. houkai says:
    September 14, 2009 at 13:54

    这个不错

    jQuery.min.js 我用的是1.3.2 50多k,在别人源码看找的

    今天一搜官方公布的最新是1.3.1 可能我在用beta版

    Reply
  3. Stingrey says:
    September 14, 2009 at 15:02

    @houkai: 貌似现在min.js都有50k左右,感觉好大啊好大。BTW,源文件发你邮箱了

    Reply
  4. houkai says:
    September 15, 2009 at 03:03

    谢谢 收到

    Reply
  5. Qing says:
    September 16, 2009 at 14:03

    好东西哦。。。

    Reply
  6. rainman says:
    February 15, 2010 at 06:28

    不错的东西,正需要这东西

    Reply
  7. usegtalk says:
    February 24, 2010 at 04:43

    我也想要这个东西,我用的defualt主题。

    beta版本的文章不支持多tag吧!我想给一个文章打多个标签。

    能否发下你的代码,usegtalk@gmail.com。

    http://usegtalk.appspot.com

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

*

*


question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

  • Recent Posts

    • 一年了,我回来了
    • Un Senso Di Te
    • 好雨时节
    • 虎年来在追昔时
    • 无题
  • Recent Comments

    • hzqtc on 一年了,我回来了
    • aaahexing on Un Senso Di Te
    • RainFlying on 好雨时节
    • Stingrey on 秦时明月,侠骨柔情
    • hzqtc on 被拒了~
  • Archives

    • November 2011
    • June 2010
    • April 2010
    • February 2010
    • December 2009
    • November 2009
    • October 2009
    • September 2009
    • August 2009
    • July 2009
    • June 2009
    • May 2009
    • March 2009
    • February 2009
    • January 2009
    • December 2008
    • November 2008
    • October 2008
    • September 2008
    • July 2008
  • Categories

    • C#
    • Google App Engine
    • Hello Program
    • Linux
    • Linux and Windows
    • Micolog
    • Misc
    • Mojo
    • Music and Movie
    • Windows
    • 另一个自己
    • 玩意儿
    • 生活
  • Meta

    • Log in
    • Entries RSS
    • Comments RSS
    • WordPress.org
© Chase Down My Dream. Proudly Powered by WordPress | Nest Theme by YChong