<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>A colourful bubble? &#187; easing</title>
	<atom:link href="http://www.paopao.name/tag/easing/feed" rel="self" type="application/rss+xml" />
	<link>http://www.paopao.name</link>
	<description>生活 读书 新知</description>
	<lastBuildDate>Wed, 20 May 2009 02:22:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>基于 jQuery 的旗帜效果纵向多级导航菜单</title>
		<link>http://www.paopao.name/programme/javascript/flag-style-multi-level-vertical-navigation-menu.html</link>
		<comments>http://www.paopao.name/programme/javascript/flag-style-multi-level-vertical-navigation-menu.html#comments</comments>
		<pubDate>Sun, 10 May 2009 04:55:28 +0000</pubDate>
		<dc:creator>paopao</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDevelop]]></category>
		<category><![CDATA[easing]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[multi-level]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.paopao.name/?p=141</guid>
		<description><![CDATA[最近看了一些<a href="http://www.google.com/search?hl=en&#038;q=jQuery+navigation&#038;btnG=Google+Search&#038;aq=f&#038;oq=" target="_blank">基于 jQuery 的好玩的导航菜单</a>，然后就想到了这样一个效果的菜单，其实我也... ]]></description>
			<content:encoded><![CDATA[<p>最近看了一些<a href="http://www.google.com/search?hl=en&#038;q=jQuery+navigation&#038;btnG=Google+Search&#038;aq=f&#038;oq=" target="_blank">基于 jQuery 的好玩的导航菜单</a>，然后就想到了这样一个效果的菜单，其实我也不知道该叫它什么效果，就叫旗帜效果 (flag style) 吧。</p>
<p>先来看看最终效果是什么样的： <a href="http://paosha.net/demo/flagnav/" target="_blank">演示(Demo)</a></p>
<p>一个导航菜单，最重要的是可访问性，其他的效果都是为了锦上添花的，所以首先我们要做一个纯 CSS 的纵向导航菜单，这样即使用户关闭了 JavaScript 也能无障碍的访问。</p>
<p><strong>第一步：</strong> 一个语义化的 HTML 结构</p>
<pre class="brush: xml;">
&lt;h2&gt;Flag Navigation&lt;/h2&gt;
&lt;ul id=&quot;nav&quot; class=&quot;nav&quot;&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;1 HTML&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2 CSS&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2.1 CSS 2&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2.2 CSS 3&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3 JavaScript&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3.1 jQuery&lt;/a&gt;
                &lt;ul&gt;
                    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3.1.1 Download&lt;/a&gt;&lt;/li&gt;
                    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3.1.2 Tutorial&lt;/a&gt;&lt;/li&gt;
                &lt;/ul&gt;
            &lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3.2 Mootools&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;3.3 Prototype&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>一般来说，我们都使用一个嵌套的无序列表来表示一个多级导航菜单。</p>
<p><strong>第二步： </strong>给这段 HTML 加上一些样式</p>
<pre class="brush: css;">
body {font: 15px &quot;Arial&quot;}
h2 {font: 18px &quot;Arial&quot;; font-weight: bold; }
.nav, .nav ul{
    width:140px; /* 定义每级菜单的宽度 */
    margin:0;
    padding:0;
    list-style-type:none;
    list-style-position:outside;
    position:relative; /* 采用相对定位，为子菜单的绝对定位提供基准元素 */
    line-height:30px;  /* 定义每条菜单的行高 */
}
.nav a:link, .nav a:visited{ /* 定义链接的基本样式 */
    display:block;
    width:130px; /* 这里的宽度和下面的 padding 加起来是 140px */
    padding:0px 5px;
    color:#fff;
    text-decoration:none;
    background:url(bg.png) no-repeat -261px 0px; /* 背景图片定位，采用 CSS Sprites 技术 */
}
.nav a:hover,a:active{ /* 定义链接的悬停和点击时的样式 */
    background-position:-79px 0px;  /* 修改背景图片定位 */
    color:#333;
}
.nav li{  /* 每条菜单的定位方式为相对定位 */
    position:relative;
}
.nav ul {  /* 子菜单的样式 */
    position:absolute; /* 采用绝对定位 */
    top:0px; /* 子菜单和上一级菜单上部平齐 */
    left:140px; /* 子菜单显示在上一级菜单右侧 */
    display:none; /* 子菜单不显示 */
}
.nav li:hover&gt;ul{
    display:block; /* 当 list 悬停时，显示它的下一级子菜单 */
}
</pre>
<p>在 &#8220;ul&#8221; 的样式中使用 line-height 是为了让菜单文字能纵向居中，同时这个值在我们后面的 jQuery flagNav 插件中有使用到。<br />
这样我们就得到了一个纯 CSS 的纵向多级导航菜单，具体效果可以看看 <a href="http://paosha.net/demo/flagnav/" target="_blank">Demo</a> 页面的第一个菜单。<br />
<strong>*</strong>这个菜单的效果在 IE6 及其之前的浏览器中是表现不出来的，因为 IE6 不支持 &#8220;a&#8221; 元素之外的其他元素的 hover 伪类，这个可以通过一些复杂的 CSS Hack 来进行兼容，不过我这里就不管它了，感兴趣的同学可以自行 Google 之。</p>
<p><strong>第三步：</strong> 用 jQuery 来添加我们的旗帜动画效果</p>
<pre class="brush: xml;">
&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;../js/jquery.easing.1.3.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.flagNav.min.js&quot;&gt;&lt;/script&gt;
</pre>
<p>我们将 jQuery 库和 jQuery Easing 插件载入，并载入自己的 <a href="http://paosha.net/demo/flagnav/jquery.flagNav.js" target="_balnk">jQuery flagNav 插件</a>。</p>
<pre class="brush: jscript;">
&lt;script type=&quot;text/javascript&quot;&gt;
    $(document).ready(function(){
        $(&quot;#nav1&quot;).flagNav({bgposout:&quot;-261px 0px&quot;, bgposover:&quot;-79px 0px&quot;});
        $(&quot;#nav2&quot;).flagNav({bgposout:&quot;-261px 0px&quot;, bgposover:&quot;-79px 0px&quot;, rollback:true});
    });
&lt;/script&gt;
</pre>
<p>再在页面载入后对我们的菜单进行初始化，其中 flagNav 函数的参数中 bgposout 和 bgposover 的值分别和前面 CSS 中 &#8220;a:link&#8221; 和 &#8220;a:hover&#8221; 的 background-position 值相对应，rollback 参数则表示在菜单消失时是否使用动画效果，默认值是不使用。</p>
<p>这样我们就完成了一个带旗帜动画效果的纵向多级导航菜单，是不是挺简单的？</p>
<p>这个菜单在所有<a href="http://www.paopao.name/browsers">我使用的浏览器</a>上都测试通过了，如果你有任何问题或建议，欢迎给我留言。</p>
<img src="http://www.paopao.name/?ak_action=api_record_view&id=141&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.paopao.name/programme/javascript/flag-style-multi-level-vertical-navigation-menu.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Circle Tag Cloud Plugin for jQuery</title>
		<link>http://www.paopao.name/programme/javascript/circle-tag-cloud-plugin-for-jquery.html</link>
		<comments>http://www.paopao.name/programme/javascript/circle-tag-cloud-plugin-for-jquery.html#comments</comments>
		<pubDate>Mon, 04 May 2009 03:59:47 +0000</pubDate>
		<dc:creator>paopao</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[easing]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[tag]]></category>

		<guid isPermaLink="false">http://www.paopao.name/internet/circle-tag-cloud-plugin-for-jquery.html</guid>
		<description><![CDATA[昨天看到某个 blog 上一个 3D Tag Cloud 插件，效果很炫，是用 Flash 写的。很想把它移植到 JavaScript 来，不过尝试失败，最后得到的效果不甚理想，不过还是记录下来吧，也算是一个学习的过程。
*... ]]></description>
			<content:encoded><![CDATA[<p>昨天看到某个 blog 上一个 <a href="http://www.google.com/search?hl=en&#038;q=3d+tag+cloud&#038;btnG=Google+Search&#038;aq=f&#038;oq=" target="_blank">3D Tag Cloud</a> 插件，效果很炫，是用 Flash 写的。很想把它移植到 JavaScript 来，不过尝试失败，最后得到的效果不甚理想，不过还是记录下来吧，也算是一个学习的过程。</p>
<p>*<a href="http://paosha.net/demo/circletagcloud/" target="_blank">演示(Demo)</a><br />
*<a href="http://paosha.net/demo/circletagcloud/jquery.circletag.js" target="_blank">下载(Download)</a></p>
<p>这个效果是基于 <a href="http://jquery.com/" target="_blank">jQuery</a> 编写的，也用到了 <a href="http://gsgd.co.uk/" target="_blank">GSGD</a> 的 <a href="http://gsgd.co.uk/sandbox/jquery/easing/" target="_blank">Easing Plugin</a> (如果选择使用 jQuery 自带的 &#8220;linear&#8221; 或者 &#8220;swing&#8221; 效果的话则不需要包含此插件)。</p>
<p>首先需要一个适当的 html 结构：</p>
<pre class="brush: xml;">&lt;h2&gt;Circle Tag Cloud&lt;/h2&gt;
&lt;div id=&quot;tag_cloud&quot;&gt;
    &lt;a id=&quot;tag1&quot; href=&quot;#1&quot; style=&quot;font-size: 20pt; color:blueviolet&quot;&gt;UED&lt;/a&gt;
    &lt;a id=&quot;tag2&quot; href=&quot;#2&quot; style=&quot;font-size: 10pt; color:maroon&quot;&gt;JavaScript&lt;/a&gt;
    &lt;a id=&quot;tag3&quot; href=&quot;#3&quot; style=&quot;font-size: 15pt; color:dodgerblue&quot;&gt;Jquery&lt;/a&gt;
    &lt;a id=&quot;tag4&quot; href=&quot;#4&quot; style=&quot;font-size: 8pt; color:violet&quot;&gt;paopao&lt;/a&gt;
    &lt;a id=&quot;tag5&quot; href=&quot;#5&quot; style=&quot;font-size: 12pt; color:lightseagreen&quot;&gt;demo&lt;/a&gt;
&lt;/div&gt;</pre>
<p>然后给这段 html 加上一些必须的样式：</p>
<pre class="brush: css;">h2 {font: 13pt/15pt &quot;Arial&quot;; font-weight: bold; }
#tag_cloud{position:relative;width:300px;height:300px;background-color:#eee;overflow:hidden;}
#tag_cloud a{position:absolute;text-decoration:none;white-space:nowrap;}
#tag_cloud a:hover{border:1px solid #000}</pre>
<p>当然还要载入一些必需的 js 文件：</p>
<pre class="brush: jscript;">&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.easing.1.3.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.circletag.min.js&quot;&gt;&lt;/script&gt;</pre>
<p>最后，在页面里加入如下的初始化 js 代码就 ok 了：</p>
<pre class="brush: jscript;">&lt;script type=&quot;text/javascript&quot;&gt;
    $(document).ready(function(){
        $(&quot;#tag_cloud&quot;).circleTag({ speed: 300 });
    });
&lt;/script&gt;</pre>
<p>下载地址<a href="http://paosha.net/demo/circletagcloud/jquery.circletag.js" target="_blank">在此</a></p>
<p>需求：<br />
* jQuery 1.3 or higher<br />
* jQuery Easing Plugin 1.3</p>
<img src="http://www.paopao.name/?ak_action=api_record_view&id=115&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.paopao.name/programme/javascript/circle-tag-cloud-plugin-for-jquery.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
