<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">

  <title><![CDATA[Zespia]]></title>
  
  <link href="http://zespia.tw/" />
  <updated>2012-02-17T22:24:55+08:00</updated>
  <id>http://zespia.tw/</id>
  <author>
    <name><![CDATA[SkyArrow]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/zespia" /><feedburner:info uri="zespia" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by/3.0/" /><feedburner:emailServiceId>zespia</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry>
    <title type="html"><![CDATA[HTML5 audio實驗]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/25MW71HcmWA/" />
    <updated>2012-02-04T13:29:00+08:00</updated>
    <id>http://zespia.tw/blog/2012/02/04/lab-html5-audio</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-OklOGJ1MUJs/TyzLDRbEG1I/AAAAAAAAEtw/QzdlAFbU0cc/s0/Cover-Art-2012-02-04-13-48-39.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;寒假即將結束，不巧膝蓋突然中了一箭，便決定實驗HTML5 &lt;code&gt;audio&lt;/code&gt;標籤的效果，雖然已有&lt;a href="http://jplayer.org/"&gt;jPlayer&lt;/a&gt;這款輕便好用的播放器，但不折騰一下就沒辦法消磨時間了，所以本次的實驗品完全由我操刀。&lt;/p&gt;

&lt;!-- more --&gt;


&lt;h2&gt;開始之前&lt;/h2&gt;

&lt;p&gt;首先必須了解&lt;code&gt;audio&lt;/code&gt;標籤的使用方式：&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='html'&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;audio&lt;/span&gt; &lt;span class="na"&gt;controls&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;source&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;music.mp3&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;source&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;music.ogg&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;/audio&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;輸入以上代碼後，便可在網頁中看到瀏覽器內建的播放器。每種瀏覽器支援的播放類型不一，最保險的方法是備妥&lt;code&gt;mp3&lt;/code&gt;、&lt;code&gt;ogg&lt;/code&gt;。&lt;/p&gt;

&lt;p&gt;為了浪費時間，當然不可能用瀏覽器的預設介面，所以刪除&lt;code&gt;controls&lt;/code&gt;屬性，透過JavaScript操作：&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;audio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;audio&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c1"&gt;// 播放&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;audio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;play&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c1"&gt;// 暫停&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;audio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pause&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;只需要懂這兩個函數，就可製作最基礎的播放器了，其他複雜的指令可參閱文末的參考出處。&lt;/p&gt;

&lt;h2&gt;介面&lt;/h2&gt;

&lt;p&gt;寫網頁時，比起最重要的JavaScript，我習慣先寫CSS，最初的參考範本是Mac的&lt;a href="http://zh.wikipedia.org/wiki/Cover_Flow"&gt;CoverFlow&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-rIgEQJIp5JE/Tyzuc1k3RLI/AAAAAAAAEt4/mHr_x4ploug/s0/120204-0001.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;經過一連串絞盡腦汁，寫了一堆亂七八糟的CSS之後，成品如下。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-5-XqLuX8SIA/TyzvHk5eRbI/AAAAAAAAEuA/BlvYv0rJEbg/s730/Cover-Art-2012-02-04-16-39-34.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;無論是倒影、中間的圓圈進度表都與&lt;a href="http://zh.wikipedia.org/wiki/Cover_Flow"&gt;CoverFlow&lt;/a&gt;非常相像，但這種樣式實在 &lt;del&gt;太麻煩了&lt;/del&gt; 不便使用者操作，所以從&lt;a href="http://www.premiumpixels.com/freebies/compact-music-player-psd/"&gt;Premium Pixels&lt;/a&gt;偷點子過來，稍微加油添醋一下，完成了播放器介面Ver. 2。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-_9vxaRCqFqc/TyzxZWhYEFI/AAAAAAAAEuI/QCpZsC91RKI/s639/Cover-Art-2012-02-04-16-49-38.jpg" alt="Ver.2與Ver.1完全不像？這種事情不重要啦！" /&gt;&lt;/p&gt;

&lt;h2&gt;核心&lt;/h2&gt;

&lt;p&gt;介面完成自爽一下之後，就得面對麻煩的JavaScript了，播放、暫停非常簡單，按鈕按下去執行鄉對應的動作即可，然而音量調整與進度條該如何處理呢？&lt;/p&gt;

&lt;p&gt;雖然本次的重點是&lt;strong&gt;消磨時間&lt;/strong&gt;，但再去造一個輪子實在他媽的太累了，於是 &lt;del&gt;聰明如我&lt;/del&gt; 請到了&lt;a href="http://jqueryui.com/"&gt;jQuery UI&lt;/a&gt;，Slider功能壓縮後需要約20KB的空間，有點龐大不過方便就好。&lt;/p&gt;

&lt;p&gt;時間的控制方式如下，單位為秒數，例如跳至第100秒的位置：&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;audio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;currentTime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;音量的控制方式如下，範圍為0~1，例如將音量調整至一半大小：&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;audio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;volume&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;&lt;code&gt;audio&lt;/code&gt;可綁定&lt;code&gt;play&lt;/code&gt;, &lt;code&gt;pause&lt;/code&gt;, &lt;code&gt;ended&lt;/code&gt;, &lt;code&gt;progress&lt;/code&gt;, &lt;code&gt;canplay&lt;/code&gt;, &lt;code&gt;timeupdate&lt;/code&gt;等事件。&lt;code&gt;play&lt;/code&gt;與&lt;code&gt;pause&lt;/code&gt;如字面上意思，分別為播放、暫停後生效。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;audio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;play&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nx"&gt;play&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pause&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;audio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pause&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nx"&gt;play&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;play&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;&lt;code&gt;ended&lt;/code&gt;為結束後生效，當音樂結束後，可透過此事件讓時間歸零。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;audio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ended&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;currentTime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;當音樂檔案開始載入後，便會啟動&lt;code&gt;progress&lt;/code&gt;事件，可透過此事件監測下載進度。Firefox可能會發生問題，建議搭配&lt;code&gt;durationchange&lt;/code&gt;事件使用。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;audio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;progress&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;endVal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;seekable&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;seekable&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;seekable&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nx"&gt;buffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;duration&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;endVal&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;%&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;當音樂下載到一定程度後，&lt;code&gt;canplay&lt;/code&gt;事件便會生效，一般會透過此事件初始化播放器。相同類型的事件還有很多，依照啟動順序分別為：&lt;code&gt;loadstart&lt;/code&gt;, &lt;code&gt;durationchange&lt;/code&gt;, &lt;code&gt;loadeddata&lt;/code&gt;, &lt;code&gt;progress&lt;/code&gt;, &lt;code&gt;canplay&lt;/code&gt;, &lt;code&gt;canplaythrough&lt;/code&gt;。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;timeupdate&lt;/code&gt;會在音樂播放時不斷生效，可透過此事件更新時間。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;audio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;timeupdate&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nx"&gt;progress&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;currentTime&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;%&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;播放列表&lt;/h2&gt;

&lt;p&gt;一個播放器的基礎功能就此完成，能夠播放、暫停、調整音量、調整時間。但這顯然還不夠，播放列表對於播放器而言相當重要。&lt;em&gt;（大概啦）&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-OklOGJ1MUJs/TyzLDRbEG1I/AAAAAAAAEtw/QzdlAFbU0cc/s0/Cover-Art-2012-02-04-13-48-39.jpg" alt="不要吐槽為啥播放列表裡全是動漫歌，林北就是宅啦..." /&gt;&lt;/p&gt;

&lt;p&gt;與自己的邏輯奮戰大約一晚後，有播放列表、隨機播放、重複播放（單首、全部）功能的播放器於焉完成。只需要214行、約6KB的代碼&lt;em&gt;（未壓縮）&lt;/em&gt;即可完成，應該能算是輕便簡易了。&lt;/p&gt;

&lt;h2&gt;後記&lt;/h2&gt;

&lt;p&gt;播放列表的製作過程有點髒，中途還重構了幾次，所以直接看範例應該會比較快，若對於範例內的程式碼感到疑惑，可在下方留言。&lt;/p&gt;

&lt;p&gt;範例內已設定了一些參數，可在&lt;code&gt;js/script.js&lt;/code&gt;內更改。第5行的&lt;code&gt;continous&lt;/code&gt;參數為連續播放，第6行的&lt;code&gt;autoplay&lt;/code&gt;參數為自動播放，第7行的&lt;code&gt;playlist&lt;/code&gt;陣列請自行設定，壓縮檔內&lt;strong&gt;不會&lt;/strong&gt;附帶範例內的音樂檔案。&lt;code&gt;playlist&lt;/code&gt;陣列的格式如下：&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;playlist&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Tell Your World&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nx"&gt;artist&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;livetune feat.初音ミク&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nx"&gt;album&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Tell Your World&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nx"&gt;cover&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;cover/tell_your_world.jpg&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nx"&gt;mp3&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;music/tell_your_world.mp3&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nx"&gt;ogg&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;music/tell_your_world.ogg&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;&lt;code&gt;title&lt;/code&gt;為標題，&lt;code&gt;artist&lt;/code&gt;為演出者，&lt;code&gt;album&lt;/code&gt;為專輯名稱，&lt;code&gt;cover&lt;/code&gt;為專輯封面的路徑，&lt;code&gt;mp3&lt;/code&gt;、&lt;code&gt;ogg&lt;/code&gt;分別為音樂檔案的路徑，建議備妥兩種格式的檔案，&lt;del&gt;要不然Firefox和Opera不就只能去死了嗎？&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;因為做到最後頭腦快爆炸了，懶得做Flash fallback，&lt;del&gt;IE請去死一死吧。&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://zespia.tw/lab/coverart"&gt;範例&lt;/a&gt;｜&lt;a href="http://zespia.tw/lab/coverart/example.zip"&gt;下載&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;參考出處&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://jplayer.org/"&gt;jPlayer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.darkthread.net/post-2011-05-15-html5-audio.aspx"&gt;小試HTML 5 audio - 黑暗執行緒&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en/Using_HTML5_audio_and_video"&gt;Using HTML5 audio and video - MDN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://net.tutsplus.com/tutorials/html-css-techniques/html5-audio-and-video-what-you-must-know/"&gt;HTML5 Audio and Video: What you Must Know | Nettuts+&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.premiumpixels.com/freebies/compact-music-player-psd/"&gt;Free PSD: Compact Music Player | Premium Pixels&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=25MW71HcmWA:GUruPF0z11U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=25MW71HcmWA:GUruPF0z11U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/25MW71HcmWA" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2012/02/04/lab-html5-audio/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Slash — 專為 Octopress 設計的極簡主題]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/DWnwep1jXf0/" />
    <updated>2012-01-25T16:27:00+08:00</updated>
    <id>http://zespia.tw/blog/2012/01/25/slash-theme</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-ZgbitMYbeqU/Tx_Ao9Xvb6I/AAAAAAAAEpI/2deNQRj2ZEM/s0/120125-0002.png" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;雖然預設主題相當漂亮，支援眾多HTML5的新特性，但每個網誌都是同一個主題，令人有些厭煩。在決定轉移到&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;的第一刻起，我就開始著手設計適用於&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;的主題，在今天終於把檔案整理完畢，集合成一個獨立的repo。&lt;/p&gt;

&lt;!-- more --&gt;


&lt;p&gt;做為一個&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;主題，當然不能輸給原本的預設主題，Slash擁有以下特性：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;自動讀取圖片的&lt;code&gt;alt&lt;/code&gt;屬性，並在圖片下方顯示註解。&lt;/li&gt;
&lt;li&gt;內建&lt;a href="http://fancyapps.com/fancybox/"&gt;Fancybox&lt;/a&gt;，讓您輕鬆展示您的作品。&lt;/li&gt;
&lt;li&gt;自動將HTML5 &lt;code&gt;video&lt;/code&gt;、&lt;code&gt;iframe&lt;/code&gt;、&lt;code&gt;object&lt;/code&gt;等嵌入式影片縮放至頁面寬度。&lt;/li&gt;
&lt;li&gt;支援responsive layouts，無論電腦、手機、平板都能獲得極佳的使用體驗。&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zespia.tw/Octopress-Theme-Slash/index_tw.html"&gt;更多介紹…&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;安裝&lt;/h2&gt;

&lt;p&gt;只需在終端機輸入以下指令，即可完成安裝：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ cd octopress
$ git clone git@github.com:tommy351/Octopress-Theme-Slash.git .themes/slash
$ rake install['slash']
$ rake generate
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;使用zsh時發生問題嗎？試試看&lt;code&gt;rake install\['slash'\]&lt;/code&gt;。&lt;/p&gt;

&lt;h2&gt;Q&amp;amp;A&lt;/h2&gt;

&lt;h3&gt;如何顯示右上角的Facebook連結？&lt;/h3&gt;

&lt;p&gt;在&lt;code&gt;_config.yml&lt;/code&gt;新增&lt;code&gt;facebook_user&lt;/code&gt;參數，並填入您的Facebook ID。&lt;/p&gt;

&lt;h3&gt;如何編輯選單？&lt;/h3&gt;

&lt;p&gt;編輯&lt;code&gt;slash&lt;/code&gt;→&lt;code&gt;source&lt;/code&gt;→&lt;code&gt;_includes&lt;/code&gt;→&lt;code&gt;custom&lt;/code&gt;→&lt;code&gt;navigation.html&lt;/code&gt;。&lt;/p&gt;

&lt;h3&gt;如何隱藏頁首的Twitter訊息串？&lt;/h3&gt;

&lt;p&gt;刪除&lt;code&gt;slash&lt;/code&gt;→&lt;code&gt;source&lt;/code&gt;→&lt;code&gt;_layouts&lt;/code&gt;→&lt;code&gt;default.html&lt;/code&gt;的第6行。&lt;/p&gt;

&lt;h3&gt;如何關閉Fancybox？&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;刪除&lt;code&gt;slash&lt;/code&gt;→&lt;code&gt;source&lt;/code&gt;→&lt;code&gt;_includes&lt;/code&gt;→&lt;code&gt;after_footer.html&lt;/code&gt;的第4行。&lt;/li&gt;
&lt;li&gt;刪除&lt;code&gt;slash&lt;/code&gt;→&lt;code&gt;source&lt;/code&gt;→&lt;code&gt;javascripts&lt;/code&gt;→&lt;code&gt;caption.js&lt;/code&gt;第14行。&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;如果還有其他問題或建議，歡迎在以下留言。&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=DWnwep1jXf0:jZNeA5H6qGs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=DWnwep1jXf0:jZNeA5H6qGs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/DWnwep1jXf0" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2012/01/25/slash-theme/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[如何利用CSS製作多級選單？]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/ABHnP-E5TwE/" />
    <updated>2012-01-24T00:00:00+08:00</updated>
    <id>http://zespia.tw/blog/2012/01/24/css-multi-level-menu</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-G8J-a1KOLEo/Tx2B1RZ87II/AAAAAAAAEmA/xfReG95s4DU/s0/%2525E8%25259E%2525A2%2525E5%2525B9%252595%2525E5%2525BF%2525AB%2525E7%252585%2525A7%2525202012-01-23%25252023.47.48.jpg" alt="一般常見的選單" /&gt;&lt;/p&gt;

&lt;p&gt;選單常見於我們的生活當中，通常用於整理一系列的指令，簡化複雜的程序，使介面看起來更加友善。當應用程式愈複雜，功能愈多時，通常會利用多級選單將類似的指令組織成一個子選單。&lt;/p&gt;

&lt;p&gt;一般網頁常見到二級選單，利用CSS即可達成，有些會透過JavaScript增加更多效果，例如動畫、延遲等。多級選單一般常使用JavaScript達成，不過透過CSS也能做出簡單的多級選單。&lt;/p&gt;

&lt;!-- more --&gt;


&lt;h3&gt;HTML&lt;/h3&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='html'&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;nav&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;選單 1&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;選單 2&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="nt"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                  &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;選單 2-1&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                  &lt;span class="nt"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                      &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;選單 2-1-1&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                      &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;選單 2-1-2&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                  &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;選單 2-2&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;選單 2-3&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;選單 3&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;選單 4&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;選單的HTML如上，所有的選單物件都是可點選的連結，理論上無限層級。&lt;/p&gt;

&lt;h3&gt;CSS&lt;/h3&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;span class='line-number'&gt;26&lt;/span&gt;
&lt;span class='line-number'&gt;27&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='css'&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;ul&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;position&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* 使子選單依照母選單的座標顯示 */&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;/* 設定母選單的連結樣式 */&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;ul&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;background&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url(detail.png)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;/* 當母選單下沒有子選單時，也就是說只有一個連結時，隱藏detail.png */&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;ul&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="nd"&gt;:only-child&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;background&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;ul&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;ul&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;display&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* 滑鼠滑入母選單後，顯示子選單 */&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;/* 二級選單顯示於一級選單的正下方 */&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;ul&lt;/span&gt; &lt;span class="nt"&gt;ul&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;position&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;top&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;list-style&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;display&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;/* 三級選單則顯示於二級選單的右方 */&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;ul&lt;/span&gt; &lt;span class="nt"&gt;ul&lt;/span&gt; &lt;span class="nt"&gt;ul&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;position&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;left&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;top&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;這樣就完成了所有步驟，不需要繁複的JavaScript，是不是很簡單呢？&lt;/p&gt;

&lt;p&gt;&lt;a href="http://zespia.tw/demo/css-multi-level-menu/"&gt;範例&lt;/a&gt;｜&lt;a href="http://zespia.tw/demo/css-multi-level-menu/example.zip"&gt;下載&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;後記&lt;/h2&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-iV892-cIuQg/Tx2KBBpbdUI/AAAAAAAAEmI/AndsjL-ZFYE/s747/%2525E8%25259E%2525A2%2525E5%2525B9%252595%2525E5%2525BF%2525AB%2525E7%252585%2525A7%2525202012-01-24%25252000.24.16.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;寫到最後反而發現詞窮，看來我真不是寫文章的料。總而言之，這是「大概很簡單」教學系列的第二彈，感謝你的收看！&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=ABHnP-E5TwE:QqCZ7YXoPK4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=ABHnP-E5TwE:QqCZ7YXoPK4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/ABHnP-E5TwE" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2012/01/24/css-multi-level-menu/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[如何利用jQuery製作頁籤？]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/ClM3OhHxRN0/" />
    <updated>2012-01-21T18:10:00+08:00</updated>
    <id>http://zespia.tw/blog/2012/01/21/jquery-tabs</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-QxpE_nzqV-E/TxrrIOtcH0I/AAAAAAAAEk0/b8xRBdm3CEQ/s500/2002313_700b_v1.jpg" alt="在文章中放入不相干的圖片好像已經成為定番？隨便啦" /&gt;&lt;/p&gt;

&lt;p&gt;最近花了一週的時間，終於完成Octopress的佈景主題，並搬移舊站（zespia.twbbs.org）的文章及留言，發現自已以前的文章實在有夠中二，看得連自己都想揍螢幕，於是偷偷撤下了部分文章。&lt;/p&gt;

&lt;p&gt;為了慶祝新站落成，便決定寫一篇超級簡易（大概啦）的jQuery頁籤製作教學，&lt;del&gt;懷著感恩的心看吧！&lt;/del&gt;&lt;/p&gt;

&lt;!-- more --&gt;


&lt;p&gt;&lt;strong&gt;本文以jQuery 1.7.1為例。&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;基礎&lt;/h2&gt;

&lt;h3&gt;HTML&lt;/h3&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='html'&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tabs&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;enable&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;頁籤 1&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;頁籤 2&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;頁籤 3&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;頁籤 4&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;contents&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;頁籤 1 的內容&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;頁籤 2 的內容&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;頁籤 3 的內容&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;頁籤 4 的內容&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;以&lt;code&gt;ul#tabs&lt;/code&gt;當作標籤，而&lt;code&gt;#contents&lt;/code&gt;內則是頁籤內容。我盡可能簡化HTML中不必要的欄位，其他功能都將在JS中實現。&lt;/p&gt;

&lt;h3&gt;CSS&lt;/h3&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;span class='line-number'&gt;26&lt;/span&gt;
&lt;span class='line-number'&gt;27&lt;/span&gt;
&lt;span class='line-number'&gt;28&lt;/span&gt;
&lt;span class='line-number'&gt;29&lt;/span&gt;
&lt;span class='line-number'&gt;30&lt;/span&gt;
&lt;span class='line-number'&gt;31&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='css'&gt;&lt;span class='line'&gt;&lt;span class="nf"&gt;#tabs&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;background&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ddd&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;border&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="k"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#ccc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;border-bottom&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;display&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;inline&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;margin-right&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;padding&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#999&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;cursor&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;pointer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nf"&gt;#tabs&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#666&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nf"&gt;#tabs&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="nc"&gt;.enable&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;border-bottom&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="k"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#ddd&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;margin-bottom&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nf"&gt;#contents&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;background&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ddd&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;border&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="k"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#ccc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="n"&gt;box&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;shadow&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt; &lt;span class="m"&gt;#ccc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nf"&gt;#contents&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;display&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;text-align&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;justify&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;padding&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt; &lt;span class="m"&gt;15px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nf"&gt;#contents&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="nd"&gt;:first-of-type&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;display&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h3&gt;JS&lt;/h3&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="c1"&gt;// 用each遍歷頁籤&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#tabs li&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;each&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;_i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="c1"&gt;// 綁定click事件到頁籤上，若要改為滑鼠移入切換頁籤的話，將click改為mouseenter&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;click&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="c1"&gt;// 移除其他頁籤的class，並將class新增至所選頁籤&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;parent&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;removeClass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;enable&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;eq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;_i&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;addClass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;enable&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="c1"&gt;// 隱藏其他頁籤的內容，並顯示所選頁籤的內容&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#contents&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;div&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;hide&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;eq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;_i&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;show&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;})(&lt;/span&gt;&lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;首先透過&lt;code&gt;each&lt;/code&gt;遍歷所有頁籤（&lt;code&gt;#tabs li&lt;/code&gt;），並在所有頁籤上綁定事件。&lt;/p&gt;

&lt;p&gt;當事件觸發時，移除其它頁籤的&lt;code&gt;class&lt;/code&gt;，隱藏其他頁籤的內容，並將&lt;code&gt;class&lt;/code&gt;新增至所選頁籤，顯示所選頁籤的內容。&lt;/p&gt;

&lt;p&gt;建議把JS放在頁尾（footer），可使頁面載入完成後才載入JS，避免出現錯誤。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://zespia.tw/demo/jquery-tabs/basic/"&gt;範例&lt;/a&gt;｜
&lt;a href="http://zespia.tw/demo/jquery-tabs/basic/example.zip"&gt;下載&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;進階&lt;/h2&gt;

&lt;p&gt;只有單純的顯示隱藏似乎太無趣了？那就加點動畫吧！只要稍微變更基礎結構，就能讓頁籤看起來更加華麗！&lt;/p&gt;

&lt;h3&gt;HTML&lt;/h3&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='html'&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tabs&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;enable&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;頁籤 1&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;頁籤 2&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;頁籤 3&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;頁籤 4&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;container&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;contents&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;頁籤 1 的內容&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;頁籤 2 的內容&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;頁籤 3 的內容&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;頁籤 4 的內容&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;進階篇的HTML結構與基礎篇只有一點小差別，僅在原本的&lt;code&gt;#contents&lt;/code&gt;的區塊外又包了一層&lt;code&gt;#container&lt;/code&gt;。&lt;/p&gt;

&lt;h3&gt;CSS&lt;/h3&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;span class='line-number'&gt;26&lt;/span&gt;
&lt;span class='line-number'&gt;27&lt;/span&gt;
&lt;span class='line-number'&gt;28&lt;/span&gt;
&lt;span class='line-number'&gt;29&lt;/span&gt;
&lt;span class='line-number'&gt;30&lt;/span&gt;
&lt;span class='line-number'&gt;31&lt;/span&gt;
&lt;span class='line-number'&gt;32&lt;/span&gt;
&lt;span class='line-number'&gt;33&lt;/span&gt;
&lt;span class='line-number'&gt;34&lt;/span&gt;
&lt;span class='line-number'&gt;35&lt;/span&gt;
&lt;span class='line-number'&gt;36&lt;/span&gt;
&lt;span class='line-number'&gt;37&lt;/span&gt;
&lt;span class='line-number'&gt;38&lt;/span&gt;
&lt;span class='line-number'&gt;39&lt;/span&gt;
&lt;span class='line-number'&gt;40&lt;/span&gt;
&lt;span class='line-number'&gt;41&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='css'&gt;&lt;span class='line'&gt;&lt;span class="nf"&gt;#tabs&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;position&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;z-index&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nf"&gt;#tabs&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;background&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ddd&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;border&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="k"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#ccc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;border-bottom&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;display&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;inline&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;margin-right&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;padding&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#999&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;cursor&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;pointer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nf"&gt;#tabs&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#666&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nf"&gt;#tabs&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="nc"&gt;.enable&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;border-bottom&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="k"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#ddd&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;margin-bottom&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nf"&gt;#container&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;background&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ddd&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;border&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="k"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#ccc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="n"&gt;box&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;shadow&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt; &lt;span class="m"&gt;#ccc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;500px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;position&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;overflow&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nf"&gt;#contents&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;position&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;left&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2000px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* 內容寬度 * 頁籤數 */&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nf"&gt;#contents&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;padding&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt; &lt;span class="m"&gt;15px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;text-align&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;justify&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;float&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;left&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;470px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* 內容寬度 - 左右padding */&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;&lt;code&gt;#contents&lt;/code&gt;改為&lt;code&gt;absolute&lt;/code&gt;（絕對定位），並設定寬度為「內容寬度 × 頁籤數量」。&lt;code&gt;#contents&lt;/code&gt;內的&lt;code&gt;div&lt;/code&gt;別忘了加上&lt;code&gt;float: left;&lt;/code&gt;，如此一來頁籤內容才會排成一橫列，將寬度設為「內容寬度 － 左右padding」。&lt;/p&gt;

&lt;p&gt;進階篇若少了JS的輔助，則無法正常顯示，除非事先設定&lt;code&gt;#container&lt;/code&gt;的高度。&lt;/p&gt;

&lt;h3&gt;JS&lt;/h3&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;span class='line-number'&gt;26&lt;/span&gt;
&lt;span class='line-number'&gt;27&lt;/span&gt;
&lt;span class='line-number'&gt;28&lt;/span&gt;
&lt;span class='line-number'&gt;29&lt;/span&gt;
&lt;span class='line-number'&gt;30&lt;/span&gt;
&lt;span class='line-number'&gt;31&lt;/span&gt;
&lt;span class='line-number'&gt;32&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;trigger&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="c1"&gt;// 使內容高度等於第一頁籤內容高度 + 上下padding&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#container&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;css&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;height&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#contents div&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;eq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="c1"&gt;// 用each遍歷頁籤&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;tabs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#tabs li&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;each&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;_i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="c1"&gt;// 為每個頁籤新增tabid屬性&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="c1"&gt;// 綁定click事件到頁籤上，若要改為滑鼠移入切換頁籤的話，將click改為mouseenter&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;tabid&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;click&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="c1"&gt;// 當trigger為false時才作用，避免重複點按造成瀏覽器crash&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;trigger&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="c1"&gt;// 取得目前的tabid，以計算動畫的間距值（內容寬度 * 頁籤間距）&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;parseInt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;parent&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.enable&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;tabid&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                  &lt;span class="nx"&gt;gap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;_i&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                  &lt;span class="nx"&gt;trigger&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="c1"&gt;// 移除其他頁籤的class，並將class新增至目前頁籤&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;parent&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;removeClass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;enable&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;eq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;_i&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;addClass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;enable&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="c1"&gt;// 使內容移動一定間距&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#contents&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="nx"&gt;left&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;-=&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="c1"&gt;// 使內容高度符合所選頁籤內容的高度（所選頁籤內容高度 + 上下padding），動畫全部結束後，使trigger值返回false&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#container&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#contents&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;eq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;_i&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                  &lt;span class="nx"&gt;trigger&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;})(&lt;/span&gt;&lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;原理與基礎篇有些差別，必須在頁籤上新增&lt;code&gt;tabid&lt;/code&gt;屬性，不過透過JS代勞即可。&lt;/p&gt;

&lt;p&gt;首先使&lt;code&gt;#container&lt;/code&gt;的高度符合第一頁籤的高度，接著同樣遍歷所有頁籤（&lt;code&gt;#tabs li&lt;/code&gt;），在所有頁籤上新增&lt;code&gt;tabid&lt;/code&gt;屬性，順便綁定事件。&lt;/p&gt;

&lt;p&gt;當事件觸發時，確認使用者是否正在操作頁籤（&lt;code&gt;trigger == false&lt;/code&gt;），若頁籤操作速度過於頻繁，可能會使得動畫錯亂。接著計算動畫間距，使內容依照間距左右移動，並使其高度符合所選頁籤內容的高度。&lt;/p&gt;

&lt;p&gt;當動畫全部結束後，返回&lt;code&gt;trigger = false&lt;/code&gt;，讓使用者能夠再度操作頁籤。&lt;/p&gt;

&lt;p&gt;如此一來，平凡樸素的頁籤便多了左右滑動的動畫，如果想要更加華麗的話，可以使用&lt;a href="http://gsgd.co.uk/sandbox/jquery/easing/"&gt;jQuery Easing Plugin&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://zespia.tw/demo/jquery-tabs/advanced/"&gt;範例&lt;/a&gt;｜
&lt;a href="http://zespia.tw/demo/jquery-tabs/advanced/example.zip"&gt;下載&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;後記&lt;/h2&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-b5l98mIhQVs/TxrQhaYJshI/AAAAAAAAEkQ/SDKduDmhoGU/s558/%2525E8%25259E%2525A2%2525E5%2525B9%252595%2525E5%2525BF%2525AB%2525E7%252585%2525A7%2525202012-01-21%25252022.47.02.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;最後的成果如上圖，當然細部的樣式、動畫請自行設定。希望這篇文章簡單易懂（？）的文章能夠幫助到你。最近預計再寫一篇CSS Only的多級選單教學，請拭目以待吧！&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=ClM3OhHxRN0:yRj0Zc-qHPQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=ClM3OhHxRN0:yRj0Zc-qHPQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/ClM3OhHxRN0" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2012/01/21/jquery-tabs/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Hello Octopress!]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/Zjxt4qXjDV0/" />
    <updated>2012-01-14T15:52:00+08:00</updated>
    <id>http://zespia.tw/blog/2012/01/14/hello-octopress</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-E4jIIrMa1-w/TxfuCwWg3TI/AAAAAAAAD2s/Cr88fZlj0SE/s0/120119-0001.png" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.acsite.net/tw/"&gt;ACSite&lt;/a&gt;的空間即將在2012/1/31到期，而我又懶得續約，這時看到愈來愈多部落客都從&lt;a href="http://wordpress.org/"&gt;WordPress&lt;/a&gt;轉移到&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;，便開始試用&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;與&lt;a href="http://wordpress.org/"&gt;WordPress&lt;/a&gt;同樣身為部落格系統，卻有相當大的不同：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://wordpress.org/"&gt;WordPress&lt;/a&gt;：&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;PHP&lt;/li&gt;
&lt;li&gt;動態網頁&lt;/li&gt;
&lt;li&gt;外掛多樣&lt;/li&gt;
&lt;li&gt;速度慢&lt;/li&gt;
&lt;li&gt;使用簡單&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;：&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Ruby&lt;/li&gt;
&lt;li&gt;靜態網頁&lt;/li&gt;
&lt;li&gt;剛起步，外掛還很少&lt;/li&gt;
&lt;li&gt;速度快&lt;/li&gt;
&lt;li&gt;geek才會用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;以下將簡單介紹&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;的安裝與使用。&lt;/p&gt;

&lt;!-- more --&gt;


&lt;h2&gt;安裝&lt;/h2&gt;

&lt;h3&gt;Ruby&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;的安裝非常簡單，首先你需要準備&lt;a href="http://www.ruby-lang.org/zh_TW/"&gt;Ruby&lt;/a&gt;的環境，以下以Mac為示範：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;請務必照著步驟做。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.安裝&lt;a href="http://itunes.apple.com/us/app/xcode/id448457090?mt=12"&gt;Xcode&lt;/a&gt;（建議使用&lt;strong&gt;4.1&lt;/strong&gt;版），或直接安裝&lt;a href="https://github.com/kennethreitz/osx-gcc-installer"&gt;OSX GCC Installer&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;2.安裝&lt;a href="http://mxcl.github.com/homebrew/"&gt;Homebrew&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"
$ brew update
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;3.安裝&lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ brew install git
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;別忘了Mac上有&lt;a href="http://www.sourcetreeapp.com/"&gt;SourceTree&lt;/a&gt;和&lt;a href="http://gitx.laullon.com/"&gt;GitX&lt;/a&gt;這兩套不錯的Git GUI可以使用！&lt;/p&gt;

&lt;p&gt;4.安裝&lt;a href="http://dev.mysql.com/downloads/mysql/"&gt;MySQL&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5.安裝&lt;a href="http://beginrescueend.com/"&gt;RVM&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ bash &amp;lt; &amp;lt;(curl -s https://rvm.beginrescueend.com/install/rvm)
$ echo "[[ -s $HOME/.rvm/scripts/rvm ]] &amp;amp;&amp;amp; source $HOME/.rvm/scripts/rvm" &amp;gt;&amp;gt; ~/.profile $ . ~/.profile
$ source ~/.profile
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;6.安裝&lt;a href="http://www.ruby-lang.org/zh_TW/"&gt;Ruby&lt;/a&gt;（&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;要求使用&lt;strong&gt;1.9.2&lt;/strong&gt;版）&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ rvm install 1.9.2
$ rvm 1.9.2 --default
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;若是安裝失敗的話，請試著使用以下方式安裝：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ rvm remove 1.9.2
$ export CC=/usr/bin/gcc-4.2
$ brew install readline
$ brew link readline
$ rvm install 1.9.2 --with-readline-dir=$rvm_path/usr
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;7.安裝&lt;a href="http://pow.cx/"&gt;Pow&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ curl get.pow.cx | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;（以上安裝步驟參考自&lt;a href="http://killtw.k2ds.net/blog/2011/10/29/how-to-install-rails/"&gt;我這樣安裝Rails - 佑樣の技術筆記&lt;/a&gt;）&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;Octopress&lt;/h3&gt;

&lt;p&gt;到目前為止，只不過安裝好&lt;a href="http://www.ruby-lang.org/zh_TW/"&gt;Ruby&lt;/a&gt;罷了，接著才是重頭戲──&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;登場！&lt;/p&gt;

&lt;p&gt;1.安裝&lt;a href="https://github.com/sstephenson/rbenv"&gt;rbenv&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ brew install rbenv
$ brew install ruby-build
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;2.下載&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ git clone git://github.com/imathis/octopress.git octopress
$ cd octopress
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;3.安裝相關套件&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gem install bundler
$ rbenv rehash
$ bundle install
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;4.安裝預設佈景主題&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ rake install
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;如此一來就安裝好&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;了，你可以輸入&lt;code&gt;rake preview&lt;/code&gt;從&lt;code&gt;localhost:4000&lt;/code&gt;預覽，或是透過&lt;a href="http://pow.cx/"&gt;Pow&lt;/a&gt;預覽：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ cd ~/.pow
$ ln -s /path-to-octopress
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;發佈&lt;/h2&gt;

&lt;p&gt;1.在&lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt;建立名為&lt;code&gt;http://yourname.github.com&lt;/code&gt;的repository，&lt;code&gt;yourname&lt;/code&gt;必須與你的使用者名稱相同，否則會建立專案頁面。&lt;/p&gt;

&lt;p&gt;2.設定&lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt;資料，並依照指示輸入GitHub頁面的repository網址。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ rake setup_github_pages
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;3.建立網誌資料&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ rake generate
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;4.發佈至&lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ rake deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;5.建立commit&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ git add .
$ git commit -m 'your message'
$ git push origin source
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;過幾分鐘後&lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt;就會寄信通知你專業建立完成，連上&lt;code&gt;yourname.github.com&lt;/code&gt;就能見到你的&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;囉！&lt;/p&gt;

&lt;p&gt;若要進一步設定，請編輯&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;根目錄中的&lt;code&gt;_config.yml&lt;/code&gt;。&lt;/p&gt;

&lt;h3&gt;自定網域&lt;/h3&gt;

&lt;p&gt;在&lt;code&gt;source/CNAME&lt;/code&gt;輸入網域名稱&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ echo 'your-domain.com' &amp;gt;&amp;gt; source/CNAME
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;若網域名稱如&lt;code&gt;www.example.com&lt;/code&gt;，只需要新增CNAME記錄&lt;code&gt;yourname.github.com&lt;/code&gt;即可；若如&lt;code&gt;example.com&lt;/code&gt;，則必須加入A記錄&lt;code&gt;207.97.227.245&lt;/code&gt;，請勿使用CNAME記錄。&lt;/p&gt;

&lt;p&gt;&lt;em&gt;（以上安裝步驟參考自&lt;a href="http://octopress.org/docs/"&gt;Octopress Documentation&lt;/a&gt;）&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;寫作&lt;/h2&gt;

&lt;p&gt;雖然安裝看起來很麻煩，不過寫作文章相當簡單！&lt;/p&gt;

&lt;h3&gt;文章&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;$ rake new_post['title']
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;輸入以上代碼後，就可在&lt;code&gt;source/_posts&lt;/code&gt;見到&lt;code&gt;yyyy-mm-dd-title.markdown&lt;/code&gt;格式的文件，以及以下內容：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;---
layout: post
title: "Post Title"
date: 2012-01-14 15:52
comments: true
categories:
---
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;你可透過以下幾種方式來編輯分類：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# 單一分類
categories: Sass

# 多重分類 (1)
categories: [CSS3, Sass, Media Queries]

# 多重分類 (2)
categories:
- CSS3
- Sass
- Media Queries
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;完整支援&lt;a href="http://markdown.tw/"&gt;Markdown&lt;/a&gt;語法，另外可利用&lt;code&gt;&amp;lt;!-- more --&amp;gt;&lt;/code&gt;達成「詳閱全文」的效果。&lt;/p&gt;

&lt;h3&gt;分頁&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;# 一般分頁  
$ rake new_page[your-page]

# 子分頁
$ rake new_page[your-page/sub-page.html]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;輸入以上代碼後，就可在&lt;code&gt;source/your-page&lt;/code&gt;中見到&lt;code&gt;index.markdown&lt;/code&gt;，以及以下內容：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;---
layout: page
title: "Page Title"
date: 2012-01-14 15:52
comments: true
sharing: true
footer: true    
---
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;操作方法與文章大同小異，同樣完整支援&lt;a href="http://markdown.tw/"&gt;Markdown&lt;/a&gt;語法。&lt;/p&gt;

&lt;h3&gt;建立&lt;/h3&gt;

&lt;p&gt;輸入&lt;code&gt;rake generate&lt;/code&gt;即可建立文章或分頁，輸入&lt;code&gt;rake deploy&lt;/code&gt;就會將文章pull到&lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt;上。&lt;/p&gt;

&lt;h2&gt;結論&lt;/h2&gt;

&lt;p&gt;經過這幾天的試用結果，老實說&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;實在有夠難用，沒有如&lt;a href="http://wordpress.org/"&gt;WordPress&lt;/a&gt;的強大管理介面，所有操作&lt;em&gt;（包括新增文章、分頁）&lt;/em&gt;都必須透過終端；然而撰寫文章比&lt;a href="http://wordpress.org/"&gt;WordPress&lt;/a&gt;快多了，不需忍耐&lt;a href="http://wordpress.org/"&gt;WordPress&lt;/a&gt;慢吞吞的編輯器，在local用&lt;a href="http://markdown.tw/"&gt;Markdown&lt;/a&gt;寫完就能直接deploy到&lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt;上。&lt;/p&gt;

&lt;p&gt;如果你是個geek，&lt;a href="http://octopress.org/"&gt;Octopress&lt;/a&gt;或許是不錯的選擇；如果不是的話，請繼續使用&lt;a href="http://wordpress.org/"&gt;WordPress&lt;/a&gt;吧！&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=Zjxt4qXjDV0:N3_D0u-ieGc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=Zjxt4qXjDV0:N3_D0u-ieGc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/Zjxt4qXjDV0" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2012/01/14/hello-octopress/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Google+ Motionless & Filter]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/2v7AJb1RE10/" />
    <updated>2011-09-17T00:00:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/09/17/google-scripts-2</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-k1-2YHu2s3A/TnQSWzr4kcI/AAAAAAAACKU/7hqHTk9sspM/s0/ryosios%252520-%252520%2525E3%252582%2525B5%2525E3%252582%2525A4%2525E3%252583%25258E%2525E3%252582%2525A6%2525E3%252582%2525B5%2525E3%252583%2525B3%2525E3%252583%252595%2525E3%252582%25259A%2525E3%252583%2525A9%2525E3%252583%2525BC.png" alt="サイノウサンプラー | ryosios（id=21795820）" /&gt;&lt;/p&gt;

&lt;p&gt;最近課業繁重，無法抽出時間撰寫網誌，於是 &lt;del&gt;寫這篇文章來騙人氣&lt;/del&gt; 再介紹一次之前寫的2個Google+腳本。上圖與本文毫無關係，純粹是在Pixiv上隨便抓一張圖片而已。&lt;/p&gt;

&lt;h2&gt;Google+ Motionless&lt;/h2&gt;

&lt;p&gt;看圖、影片或閱讀文章時，因為訊息串的快速更新，常會使畫面不斷上下抽動，不只妨礙視覺，有時還會誤按連結，因此當做練功寫了這個腳本，並於1.0.4版新增「自動載入下頁」功能。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://userscripts.org/scripts/show/111484"&gt;下載（Ver. 1.0.4）&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Google+ Fxxking Filter&lt;/h2&gt;

&lt;p&gt;「樹大必有枯枝，人多必有白痴」，有時在訊息串上會看到令人很不爽的發言，透過這腳本可以將不想看到的訊息過濾，還給使用者一片乾淨的訊息串。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://userscripts.org/scripts/show/111206"&gt;下載（Ver. 1.0.1）&lt;/a&gt;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=2v7AJb1RE10:kLDw4ja33-Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=2v7AJb1RE10:kLDw4ja33-Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/2v7AJb1RE10" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/09/17/google-scripts-2/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[HTML5 Storage的使用彙整]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/8pk4hUHWIks/" />
    <updated>2011-08-04T18:01:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/08/04/html5-storage</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-cD76uy2UDJ4/TkfPxiGAlfI/AAAAAAAABjo/4eCpLpXMyGM/s0/%2525E3%252583%2525A8%2525E3%252582%2525B3%2525E3%252582%2525B7%2525E3%252583%25259E%252520-%252520C80%2525E3%252582%2525B1%2525E3%252582%252599%2525E3%252582%2525B9%2525E3%252583%252588%2525E6%252582%2525AA%2525E9%2525AD%252594%2525E3%252581%2525A3%2525E5%2525A8%252598%2525E7%2525B5%2525B5.jpg" alt="找不到相關的圖，各位就把小惡魔胸前的脂肪塊當做Storage吧！（id=21000433）" /&gt;&lt;/p&gt;

&lt;p&gt;當初寫Google+ Hover Zoom這腳本時，壓根沒想過可以用Greasemonkey內建的參數來儲存資料，於是就選用HTML5的Storage功能來儲存資料，然而此功能僅能儲存字串（String），讓我花了好些時間上網找資料才能掌握此功能的使用方式。&lt;/p&gt;

&lt;!-- more --&gt;


&lt;p&gt;Storage的功能基本上與cookie大致相同，然而儲存空間比cookie大多了，cookie僅有4KB的空間，Storage卻有5MB的空間，讓開發者能夠好好善用。此功能的使用方式非常簡單，分為：Local Storage與Session Storage，顧名思義，兩者都是將資料儲存於用戶端的功能，然而前者能儲存的時間較長，直到使用者清除快取前都不會被刪除，而後者在使用者關閉分頁後資料就會被刪除；兩者的使用方式完全相同，以下皆以Local Storage作為示範。&lt;/p&gt;

&lt;p&gt;下文皆使用jQuery 1.7.1。&lt;del&gt;（因為我只會jQuery）&lt;/del&gt;&lt;/p&gt;

&lt;h2&gt;基礎&lt;/h2&gt;

&lt;h3&gt;設定資料&lt;/h3&gt;

&lt;p&gt;以下三種方式擇一即可，下文亦同。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;testValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;testValue&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;test&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;testValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h3&gt;取得資料&lt;/h3&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;test&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h3&gt;刪除資料&lt;/h3&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;removeItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h3&gt;資料全部清除&lt;/h3&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;clear&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;勾選框（checkbox）&lt;/h2&gt;

&lt;h3&gt;設定資料&lt;/h3&gt;

&lt;p&gt;由於Storage僅支援字串，必須使用&lt;code&gt;toString()&lt;/code&gt;函數，將Boolean值轉為字串才可儲存。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;prop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;checked&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c1"&gt;// 若jQuery版本低於1.6&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;checked&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h3&gt;取得資料&lt;/h3&gt;

&lt;p&gt;使用&lt;code&gt;===&lt;/code&gt;判斷資料。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;true&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="c1"&gt;// Do something&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;下拉式選單（select）&lt;/h2&gt;

&lt;h3&gt;設定資料&lt;/h3&gt;

&lt;p&gt;取得選單中&lt;code&gt;:selected&lt;/code&gt;的值，並儲存即可。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;:selected&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;陣列（array）&lt;/h2&gt;

&lt;h3&gt;設定資料&lt;/h3&gt;

&lt;p&gt;陣列大概是讓我最頭痛的部份，同前文所述，Storage僅支援字串，所以必須先以特殊的分隔符號來隔開每個元素。&lt;em&gt;（如|, $, ;等符號，隨你喜歡）&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;如果你在下面的陣列中看到德文，那只是我突然中二病發作而已，&lt;del&gt;如果你看得懂的話代表你也是個廚二&lt;/del&gt;。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="c1"&gt;// 一維陣列&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;storage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;one&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;two&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;three&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;four&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;|||&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c1"&gt;// 二維陣列（多維陣列亦同）&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;storage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;one&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;eins&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;two&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;zwei&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;three&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;drew&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;four&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;vier&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]};&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nx"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;|||&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h3&gt;取得資料&lt;/h3&gt;

&lt;p&gt;利用&lt;code&gt;split&lt;/code&gt;函數分割字串。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="c1"&gt;// 一維陣列&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;storage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;|||&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="c1"&gt;// do something&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c1"&gt;// 二維陣列（多維陣列亦同）&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;storage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;|||&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="c1"&gt;// do something&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;後記&lt;/h2&gt;

&lt;p&gt;最近因為課業繁忙，網誌都放著生灰超過一個月了，於是心血來潮將最近寫腳本的心得寫成文章，可能會有錯誤，請多見諒。&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=8pk4hUHWIks:maYcLxs37VE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=8pk4hUHWIks:maYcLxs37VE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/8pk4hUHWIks" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/08/04/html5-storage/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Google+ Hide Comments & Hover Zoom]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/GeVIF-HADmg/" />
    <updated>2011-07-13T00:00:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/07/13/firefox-google-plus-plugins</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-RQeiYbIusNk/Th2sVfHzaaI/AAAAAAAAAn4/Csuc7BaGAl0/s0/3468.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;大約在兩週前，Google發表了新的社群服務「Google+」，雖然很多人都說Facebook和Google+有很大的不同，不過對我而言Google+就是個宅宅版的Facebook罷了，我懶得去分析什麼社群網站的情勢了，今天的重點也不在這裡。&lt;/p&gt;

&lt;p&gt;雖然Google+已經發表了一段時間，針對Firefox所做的擴充元件還是很少，幾乎沒有，反倒是Chrome的擴充套件數量不斷提昇，因此上週六（7/9）我吃飽太閒試著用jQuery寫了生平第一個瀏覽器腳本「Google+ Hide Comments」，一個行數不到40行的簡單腳本，本來想試著研究Firefox擴充套件，但最後太複雜還要先裝一堆擴充套件於是作罷。&lt;/p&gt;

&lt;!--more--&gt;


&lt;h2&gt;Google+ Hide Comments&lt;/h2&gt;

&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-Xfc3-5viRWE/TxpnK0ViahI/AAAAAAAAEQE/4qwy9dw-moA/s0/ibMK6I.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;此腳本的功能如上圖，啟用後會在每篇文章的留言後加入&amp;#8221;Toggle comments&amp;#8221;的連結，點擊&amp;#8221;Toggle comments&amp;#8221;連結可以展開、摺疊留言。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;已停止更新&lt;/p&gt;&lt;/blockquote&gt;


&lt;h2&gt;Google+ Hover Zoom&lt;/h2&gt;

&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-qCynphcTv5Q/TxpnjMD5rMI/AAAAAAAAEQM/ggrCegH4MV0/s0/%25252525E8%252525259E%25252525A2%25252525E5%25252525B9%2525252595%25252525E5%25252525BF%25252525AB%25252525E7%2525252585%25252525A7%25252525202011-12-18%252525252012.31.03.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;滑鼠移入即可顯示原圖，並能從側邊的下載按鈕直接下載原圖。很簡單的功能，不過他媽的正規表達式有夠難寫，根本天書。目前正規表達式與判斷式的問題應該都修正完畢，未來預計擴充設定頁面的功能並改善效能。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://userscripts.org/scripts/show/106681"&gt;下載&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;我的網誌有種變成雙週刊的趨勢，每兩週才一篇新文章，明後天再發一篇Steins;Gate的文章吧。&lt;a href="http://gplus.to/SkyArrow"&gt;我的Google+&lt;/a&gt;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=GeVIF-HADmg:c1aAVBkeJYk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=GeVIF-HADmg:c1aAVBkeJYk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/GeVIF-HADmg" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/07/13/firefox-google-plus-plugins/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[鍊金術士梅露露 ～亞蘭德的鍊金術士 3～]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/Gev2vdRVzi8/" />
    <updated>2011-07-01T15:44:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/07/01/ps3-meruru</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-Tjs0-yxHD2A/Tg3WSV6L37I/AAAAAAAAAD8/vSfLgrE9g50/s0/wp_01_1920.jpg" alt="相機又被老媽搶走了，反正我攝影技術也不好，乾脆直接貼官網的桌布吧（逃）" /&gt;&lt;/p&gt;

&lt;p&gt;當初聽到這款遊戲的發售消息時，還有點猶豫自己到底該不該買，因為同一系列的托托莉我玩了將近一個月，還是摸不熟系統，最後只得來了「BAD END」的結局，但當我回神之時，手中的滑鼠已經不自覺地按下了「訂購」連結，於是乎就有你眼前的這篇文章了。&lt;/p&gt;

&lt;!-- more --&gt;




&lt;div class="video-container"&gt;&lt;object width="640" height="360"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gWYwPFxRxms?version=3&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/gWYwPFxRxms?version=3&amp;amp;hl=en_US" type="application/x-shockwave-flash" width="640" height="360" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;


&lt;p&gt;本作襲承托托莉的True End而來。亞蘭德共和國西北方的一處小國「阿路斯王國」，是個比亞蘭德還有更多發展空間的邊境國家。在5年後，阿路斯將與亞蘭德合併，於是亞蘭德派遣了煉金術士「托托莉」，協助發展這個國家成為大都市，淘氣調皮的公主「梅露露」對煉金術產生了興趣，因此決定成為托托莉的弟子，然而遭到了父王的反對。不過父王最後還是心軟，決定給梅露露3年的時間，使這個小國的人口從100人提升到3萬人，如果達成就會繼續讓梅露露研究煉金術。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;我操，你這爸爸好歹也進行一下開發吧，人口只有100人連稱為「國家」都有點困難了啊！&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;這代的畫面相較於前兩代又進步了一些，光影的處理做得更棒了，&lt;a href="http://www.nicovideo.jp/watch/sm14822011"&gt;&lt;del&gt;精美的3D模組也讓人感到讚嘆&lt;/del&gt;&lt;/a&gt;；在介面上，提供了更貼心的服務，可以直接從「開拓」和「依賴」頁面連結到調和選單，特殊的道具也做了清楚的標示。此外，這一代女主角的聲音大概是我最喜歡的，沒有前兩代過嗲的感覺。&lt;/p&gt;

&lt;h2&gt;結局&lt;/h2&gt;

&lt;p&gt;目前已解出了6種結局，獎盃進度70％：&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-YTDx9I8v5PA/Tg8ZqV2ZsaI/AAAAAAAAAUY/cNIWtq5qvVQ/s0/a13_ev_mm11_ed1_020_1.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-w6xXOgeoLNc/Tg8ZuM3lxfI/AAAAAAAAAVA/el6IxPWOCOk/s0/a13_ev_mm12_ed2_100_1.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;城での生活&lt;/strong&gt;（條件：無） &lt;br/&gt;
阿路斯與亞蘭德合併後，梅露露放棄了煉金術的研究，在家裡頹廢的不知道該做什麼，這或許是梅露露第一次在行動前思考吧？梅露露認為不能再這樣下去，決定為了「尋找目標」向未來邁進一步。&lt;em&gt;（這怎麼有點像BAD END的感覺？）&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-4iObvSe5TpA/Tg8ZsJmE1jI/AAAAAAAAAUw/z-IgZgVjjwU/s0/a13_ev_mm12_ed2_060_1.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;てんやわんや&lt;/strong&gt;（條件：人口突破10萬人） &lt;br/&gt;
阿路斯成為了亞蘭德國內數一數二的大都市，雖然梅露露每天工作都很忙碌，但感到相當開心。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-OqUw7kCoFz4/Tg8ZqpATjRI/AAAAAAAAAUc/8yTnLDXzC_o/s0/a13_ev_mm12_ed2_010_1.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;豊かな国&lt;/strong&gt;（條件：打倒エアトシャッター） &lt;br/&gt;
梅露露利用煉金知識，使阿路斯成為了亞蘭德國內的第一大農業城市。&lt;/p&gt;

&lt;p&gt;エアトシャッター還挺好打的，然而真‧エアトシャッター的血比前者多了足足一倍，就算武器和防具升級到最高等級也打不贏，只好下一輪做出頂級飾品和藥品跟它拼了&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-6dwnc0XQz-Y/Tg8Zod8B1aI/AAAAAAAAAUI/np31cDlVo0E/s0/a13_ev_mm07_ons_110_1.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-BEtzQDrTH2U/Tg8ZrrEoG5I/AAAAAAAAAUo/X_dNaS6FrEE/s0/a13_ev_mm12_ed2_040_1.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;おとこぶろ&lt;/strong&gt;（條件：建設健康ランド） &lt;br/&gt;
梅露露意外的在火山發現泉源，利用煉金知識，使阿路斯成為了亞蘭德國內的溫泉觀光景點。&lt;/p&gt;

&lt;p&gt;這結局可真麻煩，必須要有足夠的時間和インゴット才有辦法達到，光是收集就要花一個月，煉成就要花兩～三個月的時間，幸好中途的福利還挺不錯的，這就是所謂的CERO A嗎～&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-RDHfc7VRHfI/Tg8Ztv2TNcI/AAAAAAAAAU8/F3PGxcMqSls/s0/a13_ev_mm12_ed2_090_1.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;人気者の今日&lt;/strong&gt;（條件：每位角色的好感度大於80） &lt;br/&gt;
與每位朋友的好感度大於80。&lt;del&gt;梅露露成功建立後宮。&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;托托莉x咪咪太棒了！諸君，我愛百合！我愛百合！&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-gxkSasU7gmk/Tg8ZrYeMB-I/AAAAAAAAAUk/G0QfZNz6vNc/s0/a13_ev_mm12_ed2_030_1.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;やっと計画通り&lt;/strong&gt;（條件：作成「若返りの薬」且煉金等級小於50） &lt;br/&gt;
雖然成功作成了返老還童藥，然而蘿樂娜卻因師匠的私心而停留在14歲，且14歲後的記憶完全消失。&lt;/p&gt;

&lt;p&gt;可惡的GUST啊！明明某個40歲歐巴桑看起來還這麼年輕，30歲的蘿樂娜又會差多少呢！（被雙刀砍死）&lt;/p&gt;

&lt;h2&gt;連結&lt;/h2&gt;

&lt;p&gt;全CG &lt;a href="http://www.multiupload.com/DOXTY733OZ"&gt;下載&lt;/a&gt;｜&lt;a href="https://picasaweb.google.com/105931860008509594725/3?authuser=0&amp;amp;feat=directlink"&gt;相簿&lt;/a&gt; &lt;br/&gt;
&lt;a href="http://meruru.lostgamer.net/"&gt;メルルのアトリエ ～アーランドの錬金術士3～ 攻略Wiki – Lostgamer&lt;/a&gt;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=Gev2vdRVzi8:b_0ASV-zeCk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=Gev2vdRVzi8:b_0ASV-zeCk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/Gev2vdRVzi8" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/07/01/ps3-meruru/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Corner 1.0 正式版推出！]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/dY5EX9m6NEg/" />
    <updated>2011-05-27T00:00:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/05/27/corner-theme</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-QLvOYEgjUb4/TxkGbhBA48I/AAAAAAAAD_w/RnyNCr3fv-o/s0/corner-1.0b.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;日前在法雅客時，碰巧看到了展示中的Windows Phone 7，雖然我個人不是很喜歡微軟，不過WP7看來真的擺脫了前代的束縛，順暢又簡潔的介面不輸iPhone。於是我便想依照WP7的風格來設計一個佈景主題，起初還摸不著頭緒，直到開學之後才突然靈感迸發，果然人類都必須直到開學後才會開始努力嗎&amp;#8230;orz。&lt;/p&gt;

&lt;p&gt;這次相較於Pixiv Custom，大幅簡化了部分語法，本來也想試著嘗試簡化後者的語法，不過之前我做得太混亂了，連我都有點看不懂XD，於是便放棄了。&lt;/p&gt;

&lt;p&gt;此佈景支援WordPress 3.0功能，「&lt;strong&gt;自定選單&lt;/strong&gt;」以及「&lt;strong&gt;自定背景&lt;/strong&gt;」，可支援Banner聯播，只需將「&lt;strong&gt;700x200px&lt;/strong&gt;」的圖片放入&lt;code&gt;/headers&lt;/code&gt;資料夾內，頁面重新整理時便會隨機顯示圖片。1.0正式版已&lt;strong&gt;新增&lt;/strong&gt;以下功能：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AJAX頁面導覽&lt;/li&gt;
&lt;li&gt;分享按鈕&lt;/li&gt;
&lt;li&gt;留言功能按鈕提示&lt;/li&gt;
&lt;li&gt;重新改版佈景設定頁面&lt;/li&gt;
&lt;/ul&gt;


&lt;!-- more --&gt;


&lt;h2&gt;瀏覽器支援&lt;/h2&gt;

&lt;p&gt;完整支援 Mozilla Firefox,  Google Chrome, Safari, Opera, Internet Explorer 8，但 Internet Explorer 7&amp;amp;6 有部分留言列表問題。&lt;/p&gt;

&lt;h2&gt;下載&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://wordpress.org/extend/themes/download/corner.1.0.9.zip"&gt;正式版 (Ver. 1.0.9)&lt;/a&gt; &lt;br/&gt;
&lt;a href="http://wp-themes.com/corner"&gt;預覽&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;更新記錄&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;1.0.9

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 修復圖片與文字中沒有留白的問題&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 將&lt;code&gt;$content_width&lt;/code&gt;更改為660&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 修復後台重設按鈕的問題&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;移除&lt;/strong&gt; - 分頁中「留言已停用」的提示&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;1.0.8

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; – 使用Settings API完成較安全的後台頁面&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;1.0.7

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; – 修復文章浮動（float）問題&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; – 變更背景圖片以符合較大的螢幕解析度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;移除&lt;/strong&gt; – 因為WordPress 3.0內建&lt;code&gt;automatic_feed_links()&lt;/code&gt;函數，故&lt;strong&gt;移除&lt;/strong&gt;&lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;標籤內的RSS連結&lt;/head&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;1.0.6

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 定義置頂文章的樣式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 在404頁面中&lt;strong&gt;新增&lt;/strong&gt;搜尋欄與標籤雲供訪客使用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 後台頁面使用cookie記憶上一次開啟的分頁（時效一天）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 「繼續閱讀」連結&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 搜尋欄改採&lt;code&gt;search_form()&lt;/code&gt;函數&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 更改字元編碼宣告&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 後台頁面改採&lt;code&gt;checked()&lt;/code&gt;與&lt;code&gt;selected()&lt;/code&gt;函數簡化代碼&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;1.0.5

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 重新設計搜尋欄的動畫&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 棄用不安全的AJAX頁面導覽方式，改為呼叫函數的方式，缺點是修改後僅能使用於首頁&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 修復後台頁面&lt;code&gt;Undefined Index&lt;/code&gt;的問題&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 新增&lt;code&gt;search-failed.php&lt;/code&gt;，為搜尋失敗的訪客提供更詳細的說明&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 簡化並加強&lt;code&gt;comment.js&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;1.0.4

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 某些伺服器會有&lt;code&gt;Cannot modify header information&lt;/code&gt;的PHP問題，將&lt;code&gt;function.php&lt;/code&gt;中的函數修改後排除&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;1.0.2

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 首頁的其他布局（概要與縮圖、僅標題）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 在首頁及彙整頁面中顯示日期&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 標記留言為「管理員」或「審核中」&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - TinyMCE 編輯器的自定樣式表&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - WordPress 預設的自定頁首圖片&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 置頂文章的樣式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 修復無法列印字元&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 部分管理頁面的翻譯&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 使用&lt;code&gt;get_template_part()&lt;/code&gt;函數縮減代碼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 重新設計搜尋欄的動畫&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;1.0.1

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 可調整標題大小&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 副標題顯示&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 將選單深度增至無限&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;1.0

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - AJAX頁面導覽&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 留言功能按鈕提示&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 文章分享按鈕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 回覆留言前增加「@使用者名稱」連結&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 佈景設定頁面&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 簡化CSS與Javascript代碼&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=dY5EX9m6NEg:1RcvjDYKaiA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=dY5EX9m6NEg:1RcvjDYKaiA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/dY5EX9m6NEg" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/05/27/corner-theme/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[如何使用Settings API製作佈景後台選項？]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/mAwlmi9dl_4/" />
    <updated>2011-05-22T16:02:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/05/22/how-to-use-settings-api</id>
    <content type="html">&lt;p&gt;隨著WordPress版本號的推進，不只系統越變越肥大，外掛、佈景主題的條件也越來越嚴苛，全部規定必須使用官方的現有函數製作，雖然WordPress的函數庫真的很豐富很好用，不過這麼獨裁的規定著實讓人很不爽。&lt;/p&gt;

&lt;p&gt;因此，由於官方要求，我必須使用Settings API來製作主題選項，但官方文件的資料的資訊實在太少了，在下沒慧根實在看不懂，經過Google百般尋覓後，將我較喜歡的幾篇文章（見參考出處）整合寫成了這篇文章，我沒有PHP底子，只有在圖書館翻過幾本書，內文可能會有些錯誤，請見諒。&lt;/p&gt;

&lt;!-- more --&gt;


&lt;h2&gt;基礎架構&lt;/h2&gt;

&lt;p&gt;首先，建立一個空白的php檔案，以下以&lt;code&gt;function-admin.php&lt;/code&gt;為例，實際情況依個人設定而有差異。然後，在&lt;code&gt;function.php&lt;/code&gt;寫入下列程式碼，以引入&lt;code&gt;function-admin.php&lt;/code&gt;這個外部檔案。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='php'&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;if ( file_exists( TEMPLATEPATH.&amp;#39;/function-admin.php&amp;#39; ) ) {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  require_once( TEMPLATEPATH.&amp;#39;/function-admin.php&amp;#39; );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  $theme_option = new theme_option();&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;接著在&lt;code&gt;function-admin.php&lt;/code&gt;建立&lt;code&gt;class&lt;/code&gt;，以下以&lt;code&gt;theme_option&lt;/code&gt;為例：&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;span class='line-number'&gt;26&lt;/span&gt;
&lt;span class='line-number'&gt;27&lt;/span&gt;
&lt;span class='line-number'&gt;28&lt;/span&gt;
&lt;span class='line-number'&gt;29&lt;/span&gt;
&lt;span class='line-number'&gt;30&lt;/span&gt;
&lt;span class='line-number'&gt;31&lt;/span&gt;
&lt;span class='line-number'&gt;32&lt;/span&gt;
&lt;span class='line-number'&gt;33&lt;/span&gt;
&lt;span class='line-number'&gt;34&lt;/span&gt;
&lt;span class='line-number'&gt;35&lt;/span&gt;
&lt;span class='line-number'&gt;36&lt;/span&gt;
&lt;span class='line-number'&gt;37&lt;/span&gt;
&lt;span class='line-number'&gt;38&lt;/span&gt;
&lt;span class='line-number'&gt;39&lt;/span&gt;
&lt;span class='line-number'&gt;40&lt;/span&gt;
&lt;span class='line-number'&gt;41&lt;/span&gt;
&lt;span class='line-number'&gt;42&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='php'&gt;&lt;span class='line'&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;theme_option&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="c1"&gt;// 建立選項區段&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="nv"&gt;$sections&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="c1"&gt;// 各個選項的預設值&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="nv"&gt;$defaults&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="s1"&gt;&amp;#39;test_checkbox&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// 0 為停用，1 為啟用&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="s1"&gt;&amp;#39;test_text&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="s1"&gt;&amp;#39;test_select&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;one&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="s1"&gt;&amp;#39;test_radio&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;one&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="s1"&gt;&amp;#39;test_textarea&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="c1"&gt;// checkbox的陣列，如果選項類型是 checkbox 的話，可能會出一些 &amp;quot;Undefined Index&amp;quot; 的問題，所以需要特別處理&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="nv"&gt;$checkboxes&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="c1"&gt;// 初始化&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;__construct&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;checkboxes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;sections&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;general&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;General&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;sections&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;reading&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Reading&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;sections&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;other&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Other&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="c1"&gt;// 將各個選項的預設值寫入資料庫&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nv"&gt;$DBOptions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;get_option&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pixiv_options&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nv"&gt;$defaults&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;defaults&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;is_array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$DBOptions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;$DBOptions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$DBOptions&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$key&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$value&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nb"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$DBOptions&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="nv"&gt;$defaults&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$DBOptions&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nx"&gt;update_option&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pixiv_options&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$defaults&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nx"&gt;add_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;admin_menu&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;add_pages&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nx"&gt;add_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;admin_init&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;register_settings&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;初始化完成後，接著就可邁入下一個步驟「&lt;strong&gt;註冊設定&lt;/strong&gt;」。&lt;/p&gt;

&lt;h2&gt;註冊設定&lt;/h2&gt;

&lt;p&gt;為了要讓佈景選項出現在選單上，新增一個名為&lt;code&gt;add_pages&lt;/code&gt;的函數：&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='php'&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;public function add_pages() {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  $admin_page = add_theme_page( &amp;#39;Theme Options&amp;#39;, &amp;#39;Theme Options&amp;#39;, &amp;#39;edit_theme_options&amp;#39;, &amp;#39;test-settings&amp;#39;, array( &amp;amp;$this, &amp;#39;display_page&amp;#39; ) );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Settings API的設計雖然提供了一個更簡單的註冊設定的方式，但那僅限於選項很少的時候，若是Pixiv Custom這種選項數高達51項的主題就不可能一項一項編寫、呼叫個別的函數了，所以我們建立名為&lt;code&gt;create_setting&lt;/code&gt;的函數，以精簡、整齊代碼。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;span class='line-number'&gt;26&lt;/span&gt;
&lt;span class='line-number'&gt;27&lt;/span&gt;
&lt;span class='line-number'&gt;28&lt;/span&gt;
&lt;span class='line-number'&gt;29&lt;/span&gt;
&lt;span class='line-number'&gt;30&lt;/span&gt;
&lt;span class='line-number'&gt;31&lt;/span&gt;
&lt;span class='line-number'&gt;32&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='php'&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;public function create_setting( $args = array() ) {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  $defaults = array(&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;id&amp;#39;        =&amp;gt; &amp;#39;&amp;#39;, // 選項 id&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;title&amp;#39;     =&amp;gt; &amp;#39;&amp;#39;, // 選項標題&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;desc&amp;#39;      =&amp;gt; &amp;#39;&amp;#39;, // 選項敘述&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;type&amp;#39;      =&amp;gt; &amp;#39;text&amp;#39;, // 選項類型&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;section&amp;#39;   =&amp;gt; &amp;#39;general&amp;#39;, // 選項區段（__construct函數中所設定的參數）&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;choices&amp;#39;   =&amp;gt; array(), // 選項分支（供radio, select用）&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;class&amp;#39;     =&amp;gt; &amp;#39;&amp;#39;, // 選項 class&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;before&amp;#39;    =&amp;gt; &amp;#39;&amp;#39;, // 選項前的文字&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;after&amp;#39;     =&amp;gt; &amp;#39;&amp;#39; // 選項後的文字&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  extract( wp_parse_args( $args, $defaults ) );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  $field_args = array(&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;type&amp;#39;      =&amp;gt; $type,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;id&amp;#39;        =&amp;gt; $id,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;desc&amp;#39;      =&amp;gt; $desc,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;choices&amp;#39;   =&amp;gt; $choices,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;label_for&amp;#39; =&amp;gt; $id,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;class&amp;#39;     =&amp;gt; $class,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;before&amp;#39;    =&amp;gt; $before,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;after&amp;#39;     =&amp;gt; $after&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  add_settings_field( $id, $title, array( $this, &amp;#39;display_settings&amp;#39; ), &amp;#39;test-settings&amp;#39;, $section, $field_args );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // 若選項類型為checkbox，將其加入checkboxes陣列&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  if ( $type = &amp;#39;checkbox&amp;#39; )&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      $this-&amp;gt;checkboxes[] = $id;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;若陣列內容為空白，則會依照&lt;code&gt;defaults&lt;/code&gt;來建立選項。可依個人使用的不同，加入或刪除變數。&lt;/p&gt;

&lt;p&gt;接著就得分別填入每個選項的參數了，建立一個名為&lt;code&gt;register_settings&lt;/code&gt;的函數。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;span class='line-number'&gt;26&lt;/span&gt;
&lt;span class='line-number'&gt;27&lt;/span&gt;
&lt;span class='line-number'&gt;28&lt;/span&gt;
&lt;span class='line-number'&gt;29&lt;/span&gt;
&lt;span class='line-number'&gt;30&lt;/span&gt;
&lt;span class='line-number'&gt;31&lt;/span&gt;
&lt;span class='line-number'&gt;32&lt;/span&gt;
&lt;span class='line-number'&gt;33&lt;/span&gt;
&lt;span class='line-number'&gt;34&lt;/span&gt;
&lt;span class='line-number'&gt;35&lt;/span&gt;
&lt;span class='line-number'&gt;36&lt;/span&gt;
&lt;span class='line-number'&gt;37&lt;/span&gt;
&lt;span class='line-number'&gt;38&lt;/span&gt;
&lt;span class='line-number'&gt;39&lt;/span&gt;
&lt;span class='line-number'&gt;40&lt;/span&gt;
&lt;span class='line-number'&gt;41&lt;/span&gt;
&lt;span class='line-number'&gt;42&lt;/span&gt;
&lt;span class='line-number'&gt;43&lt;/span&gt;
&lt;span class='line-number'&gt;44&lt;/span&gt;
&lt;span class='line-number'&gt;45&lt;/span&gt;
&lt;span class='line-number'&gt;46&lt;/span&gt;
&lt;span class='line-number'&gt;47&lt;/span&gt;
&lt;span class='line-number'&gt;48&lt;/span&gt;
&lt;span class='line-number'&gt;49&lt;/span&gt;
&lt;span class='line-number'&gt;50&lt;/span&gt;
&lt;span class='line-number'&gt;51&lt;/span&gt;
&lt;span class='line-number'&gt;52&lt;/span&gt;
&lt;span class='line-number'&gt;53&lt;/span&gt;
&lt;span class='line-number'&gt;54&lt;/span&gt;
&lt;span class='line-number'&gt;55&lt;/span&gt;
&lt;span class='line-number'&gt;56&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='php'&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;public function register_settings() {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  register_setting( &amp;#39;test_options&amp;#39;, &amp;#39;test_options&amp;#39;, array( &amp;amp;$this, &amp;#39;validate_settings&amp;#39; ) );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // 新增選項區段&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  foreach ( $this-&amp;gt;sections as $slug =&amp;gt; $title )&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      add_settings_section( $slug, &amp;#39;&amp;#39;, array( &amp;amp;$this, &amp;#39;display_section&amp;#39; ), &amp;#39;test-settings&amp;#39; );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // checkbox 設定&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  $this-&amp;gt;create_setting( array (&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;id&amp;#39;        =&amp;gt; &amp;#39;test_checkbox&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;title&amp;#39;     =&amp;gt; &amp;#39;Test Checkbox&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;desc&amp;#39;      =&amp;gt; &amp;#39;Test Checkbox&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;type&amp;#39;      =&amp;gt; &amp;#39;checkbox&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;section&amp;#39;   =&amp;gt; &amp;#39;general&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  ) );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // text 設定&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  $this-&amp;gt;create_setting( array (&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;id&amp;#39;        =&amp;gt; &amp;#39;test_text&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;title&amp;#39;     =&amp;gt; &amp;#39;Test Text&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;desc&amp;#39;      =&amp;gt; &amp;#39;Test Text&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;type&amp;#39;      =&amp;gt; &amp;#39;text&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;section&amp;#39;   =&amp;gt; &amp;#39;general&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  ) );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // select 設定&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  $this-&amp;gt;create_setting( array (&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;id&amp;#39;        =&amp;gt; &amp;#39;test_select&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;title&amp;#39;     =&amp;gt; &amp;#39;Test Select&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;desc&amp;#39;      =&amp;gt; &amp;#39;Test Select&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;type&amp;#39;      =&amp;gt; &amp;#39;select&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;section&amp;#39;   =&amp;gt; &amp;#39;general&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;choices&amp;#39;   =&amp;gt; array(&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          &amp;#39;one&amp;#39;   =&amp;gt; &amp;#39;Option One&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          &amp;#39;two&amp;#39;   =&amp;gt; &amp;#39;Option Two&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      )&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  ) );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // radio 設定&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  $this-&amp;gt;create_setting( array (&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;id&amp;#39;        =&amp;gt; &amp;#39;test_radio&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;title&amp;#39;     =&amp;gt; &amp;#39;Test Radio&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;desc&amp;#39;      =&amp;gt; &amp;#39;Test Raio&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;type&amp;#39;      =&amp;gt; &amp;#39;radio&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;section&amp;#39;   =&amp;gt; &amp;#39;general&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;choices&amp;#39;   =&amp;gt; array(&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          &amp;#39;one&amp;#39;   =&amp;gt; &amp;#39;Option One&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          &amp;#39;two&amp;#39;   =&amp;gt; &amp;#39;Option Two&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      )&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  ) );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // textarea 設定&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  $this-&amp;gt;create_setting( array (&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;id&amp;#39;        =&amp;gt; &amp;#39;test_textarea&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;title&amp;#39;     =&amp;gt; &amp;#39;Test Textarea&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;desc&amp;#39;      =&amp;gt; &amp;#39;Test Textarea&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;type&amp;#39;      =&amp;gt; &amp;#39;textarea&amp;#39;,&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;#39;section&amp;#39;   =&amp;gt; &amp;#39;general&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  ) );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;到了這裡，只不過是設定了各個選項的數值罷了，選項頁面還是一片空白，喝點水休息一下，下一步就要正式設定選項頁面的內容了。&lt;/p&gt;

&lt;h2&gt;顯示頁面&lt;/h2&gt;

&lt;p&gt;首先，新增一個名為&lt;code&gt;display_page&lt;/code&gt;的函數。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='php'&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;public function display_page() { ?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  &amp;lt;div class=&amp;quot;wrap&amp;quot;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;lt;div class=&amp;quot;icon32&amp;quot; id=&amp;quot;icon-themes&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;lt;h2&amp;gt;Theme Options&amp;lt;/h2&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;lt;form action=&amp;quot;options.php&amp;quot; method=&amp;quot;post&amp;quot; id=&amp;quot;test_admin&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          &lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nb"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_GET&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;settings-updated&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;              &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;lt;div class=&amp;quot;updated fade&amp;quot;&amp;gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Settings saved.&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          &lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="nx"&gt;settings_fields&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test_options&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="nx"&gt;do_settings_sections&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$_GET&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;page&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;          &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;test_options[submit]&amp;quot; class=&amp;quot;button-primary&amp;quot; value=&amp;quot;&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="nx"&gt;esc_attr_e&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Save Changes&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="x"&gt;&amp;quot; /&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;test_options[reset]&amp;quot; class=&amp;quot;button-secondary&amp;quot; onclick=&amp;quot;if(confirm(&amp;#39;Are you Sure?&amp;#39;)) return true; else return false;&amp;quot; value=&amp;quot;&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="nx"&gt;esc_attr_e&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Reset to Deafults&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="x"&gt;&amp;quot; /&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      &amp;lt;/form&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  &amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;接著新增一個名為&lt;code&gt;display_section&lt;/code&gt;的函數，該函數內容可以為空，也可以設定一些文字、HTML內容等，輸出的內容會顯示在每個區段的最上方。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='php'&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;public function display_section() {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // whatever&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;顯示選項&lt;/h2&gt;

&lt;p&gt;到目前為止，主題選項頁面還是一片白，加入&lt;code&gt;display_settings&lt;/code&gt;函數後，主題選項頁面就擁有最基礎的樣貌了。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;span class='line-number'&gt;26&lt;/span&gt;
&lt;span class='line-number'&gt;27&lt;/span&gt;
&lt;span class='line-number'&gt;28&lt;/span&gt;
&lt;span class='line-number'&gt;29&lt;/span&gt;
&lt;span class='line-number'&gt;30&lt;/span&gt;
&lt;span class='line-number'&gt;31&lt;/span&gt;
&lt;span class='line-number'&gt;32&lt;/span&gt;
&lt;span class='line-number'&gt;33&lt;/span&gt;
&lt;span class='line-number'&gt;34&lt;/span&gt;
&lt;span class='line-number'&gt;35&lt;/span&gt;
&lt;span class='line-number'&gt;36&lt;/span&gt;
&lt;span class='line-number'&gt;37&lt;/span&gt;
&lt;span class='line-number'&gt;38&lt;/span&gt;
&lt;span class='line-number'&gt;39&lt;/span&gt;
&lt;span class='line-number'&gt;40&lt;/span&gt;
&lt;span class='line-number'&gt;41&lt;/span&gt;
&lt;span class='line-number'&gt;42&lt;/span&gt;
&lt;span class='line-number'&gt;43&lt;/span&gt;
&lt;span class='line-number'&gt;44&lt;/span&gt;
&lt;span class='line-number'&gt;45&lt;/span&gt;
&lt;span class='line-number'&gt;46&lt;/span&gt;
&lt;span class='line-number'&gt;47&lt;/span&gt;
&lt;span class='line-number'&gt;48&lt;/span&gt;
&lt;span class='line-number'&gt;49&lt;/span&gt;
&lt;span class='line-number'&gt;50&lt;/span&gt;
&lt;span class='line-number'&gt;51&lt;/span&gt;
&lt;span class='line-number'&gt;52&lt;/span&gt;
&lt;span class='line-number'&gt;53&lt;/span&gt;
&lt;span class='line-number'&gt;54&lt;/span&gt;
&lt;span class='line-number'&gt;55&lt;/span&gt;
&lt;span class='line-number'&gt;56&lt;/span&gt;
&lt;span class='line-number'&gt;57&lt;/span&gt;
&lt;span class='line-number'&gt;58&lt;/span&gt;
&lt;span class='line-number'&gt;59&lt;/span&gt;
&lt;span class='line-number'&gt;60&lt;/span&gt;
&lt;span class='line-number'&gt;61&lt;/span&gt;
&lt;span class='line-number'&gt;62&lt;/span&gt;
&lt;span class='line-number'&gt;63&lt;/span&gt;
&lt;span class='line-number'&gt;64&lt;/span&gt;
&lt;span class='line-number'&gt;65&lt;/span&gt;
&lt;span class='line-number'&gt;66&lt;/span&gt;
&lt;span class='line-number'&gt;67&lt;/span&gt;
&lt;span class='line-number'&gt;68&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='php'&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;public function display_settings( $args = array() ) {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  extract( $args );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // 取得資料庫內的現有選項&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  $options = get_option(&amp;#39;test_options&amp;#39;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // 以下顯示 register_settings 內所設定的選項參數&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // 如果設定了 class 參數，顯示 class 參數&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  if ( $class != &amp;#39;&amp;#39; )&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      echo &amp;#39;&amp;lt;div class=&amp;quot;&amp;#39; . $class . &amp;#39;&amp;quot;&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // 如果設定了選項敘述，顯示選項敘述&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  if ( $desc != &amp;#39;&amp;#39; )&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      echo $desc . &amp;#39;&amp;lt;br /&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // 如果設定了 before 參數，在選項前顯示 before 參數&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  if ( $before != &amp;#39;&amp;#39; )&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      echo &amp;#39;&amp;lt;label for=&amp;quot;&amp;#39; . $id . &amp;#39;&amp;quot;&amp;gt;&amp;#39; . $before . &amp;#39;&amp;lt;/label&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // 偵測選項類型，以下內容可依個人喜好自行設定&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  switch ( $type ) {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      case &amp;#39;checkbox&amp;#39;:&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          echo &amp;#39;&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;&amp;#39; . $id . &amp;#39;&amp;quot; name=&amp;quot;test_options[&amp;#39; . $id . &amp;#39;]&amp;quot; value=&amp;quot;1&amp;quot;&amp;#39;.checked( $options[$id], 1, false ) . &amp;#39; /&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          break;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      case &amp;#39;select&amp;#39;:&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          echo &amp;#39;&amp;lt;select name=&amp;quot;test_options[&amp;#39; . $id . &amp;#39;]&amp;quot;&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          foreach ( $choices as $value =&amp;gt; $label )&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;              echo &amp;#39;&amp;lt;option value=&amp;quot;&amp;#39; . $value . &amp;#39;&amp;quot;&amp;#39; . selected( $options[$id], $value, false ) . &amp;#39;&amp;gt;&amp;#39; . $label . &amp;#39;&amp;lt;/option&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          echo &amp;#39;&amp;lt;/select&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          break;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      case &amp;#39;radio&amp;#39;:&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          $i = 0;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          foreach ( $choices as $value =&amp;gt; $label ) {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;              echo &amp;#39;&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;test_options[&amp;#39; . $id . &amp;#39;]&amp;quot; id=&amp;quot;&amp;#39; . $id . $i . &amp;#39;&amp;quot; value=&amp;quot;&amp;#39; . $value . &amp;#39;&amp;quot;&amp;#39;. checked( $options[$id], $value, false ) . &amp;#39; /&amp;gt;&amp;lt;label for=&amp;quot;&amp;#39; . $id . &amp;#39;&amp;quot;&amp;gt;&amp;#39; . $label . &amp;#39;&amp;lt;/label&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;              if( $i &amp;lt; count($options) - 1 )&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;                  echo &amp;#39;&amp;lt;br /&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;              $i++;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          }&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          break;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      case &amp;#39;textarea&amp;#39;:&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          echo &amp;#39;&amp;lt;textarea id=&amp;quot;&amp;#39; . $id . &amp;#39;&amp;quot; name=&amp;quot;test_options[&amp;#39; . $id . &amp;#39;]&amp;quot; cols=&amp;quot;95%&amp;quot; rows=&amp;quot;10&amp;quot;&amp;gt;&amp;#39; . $options[$id] . &amp;#39;&amp;lt;/textarea&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          break;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      case &amp;#39;text&amp;#39;:&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      default:&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          echo &amp;#39;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;&amp;#39; . $id . &amp;#39;&amp;quot; name=&amp;quot;test_options[&amp;#39; . $id . &amp;#39;]&amp;quot; value=&amp;quot;&amp;#39; . $options[$id] . &amp;#39;&amp;quot; maxlength=&amp;quot;&amp;#39; . $maxlength . &amp;#39;&amp;quot; /&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          break;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  }&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // 如果設定了 after 參數，在選項後顯示 after 參數&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  if ( $after != &amp;#39;&amp;#39; )&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      echo &amp;#39;&amp;lt;label for=&amp;quot;&amp;#39; . $id . &amp;#39;&amp;quot;&amp;gt;&amp;#39; . $after . &amp;#39;&amp;lt;/label&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  // 如果設定了 class 參數，以 div 包含選項&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  if ( $class != &amp;#39;&amp;#39; )&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      echo &amp;#39;&amp;lt;/div&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;設定完成後，主題選項頁面就不再孤寥無幾了，但儲存似乎有些問題？沒錯，因為Settings API在&lt;code&gt;checkbox&lt;/code&gt;的處理上有些問題，&lt;code&gt;checkbox&lt;/code&gt;若停用就不會將數值寫入資料庫了，所以我們必須在選項儲存前先進行驗證，把停用的&lt;code&gt;checkbox&lt;/code&gt;值補上&lt;code&gt;0&lt;/code&gt;，此外，目前重設按鈕也沒有反應，也必須透過同樣的方式，事先偵測輸入值，若使用者按下重設按鈕，則拋棄現有設定，將開頭所設定的&lt;code&gt;defaults&lt;/code&gt;變數寫入資料庫。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='php'&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;public function validate_settings( $input ) {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  $options = get_option(&amp;#39;test_options&amp;#39;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  $valid_input = $options;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  $submit = ( ! empty( $input[&amp;#39;submit&amp;#39;] ) ? true : false );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  $reset = ( ! empty( $input[&amp;#39;reset&amp;#39;] ) ? true : false );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  if ( $submit ) {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      // 若 checkbox 停用，補 &amp;quot;0&amp;quot; 儲存至資料庫&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      foreach ( $this-&amp;gt;checkboxes as $id ) {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;          if ( isset( $options[$id] ) &amp;amp;&amp;amp; ! isset( $input[$id] ) )&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;              $input[$id] = &amp;#39;0&amp;#39;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      }&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      $valid_input = $input;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  } elseif ( $reset ) {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      // 使用事先設定的預設值寫入資料庫&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;      $valid_input = $this-&amp;gt;defaults;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  }&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  return $valid_input;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;自定 JavaScript 與 CSS 樣式&lt;/h2&gt;

&lt;p&gt;如果只是基本的主題選項的話，第四步便可以宣告結束了，但如果想要進一步的設定 Javascript 與 CSS 樣式呢？你可以加入以下的函數，直接引入外部檔案，或是直接寫在 PHP 檔案也可以。 &lt;br/&gt;
&lt;em&gt;※ 附註：若直接使用 $ 當作 jQuery 標籤的話，可能會有衝突問題，請使用其他字串代替，或改為&lt;code&gt;jQuery(document).ready(function($){...});&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='php'&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;public function styles() {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  wp_enqueue_style(&amp;#39;testAdminCSS&amp;#39;, get_template_directory_uri().&amp;#39;/admin/admin.css&amp;#39;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;// 引入 Javascript&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;public function scripts() {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  wp_enqueue_script(&amp;#39;testAdminJS&amp;#39;, get_template_directory_uri().&amp;#39;/admin/admin.js&amp;#39;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;然後在&lt;code&gt;add_pages&lt;/code&gt;函數中，加入以下程式碼，就可成功引入 CSS 與 Javascript 了。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='php'&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;add_action( &amp;#39;admin_print_scripts-&amp;#39; . $admin_page, array( &amp;amp;$this, &amp;#39;scripts&amp;#39; ) );&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;add_action( &amp;#39;admin_print_styles-&amp;#39; . $admin_page, array( &amp;amp;$this, &amp;#39;styles&amp;#39; ) );&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;那麼該如何做出Pixiv Custom式樣的分頁呢？因為我PHP功力差，所以主要透過Javascript來包裝，你或許會有更好的方法也說不定。
首先，修改&lt;code&gt;display_page&lt;/code&gt;函數，在你喜歡的地方加入以下程式碼：&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='html'&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;test_switch&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tab0&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;分頁 1&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;tab1&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;分頁 2&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="c"&gt;&amp;lt;!-- 依此類推... --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;這樣選項頁面就會出現各個區段的連結文字了，接下來只要透過Javascript包裝表格，搭配CSS控制表格顯示即可。 &lt;br/&gt;
&lt;em&gt;※ ID必須符合&lt;code&gt;__construct&lt;/code&gt;函數中的參數，前面再加上上述程式碼的前綴字元。&lt;/em&gt;&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;span class='line-number'&gt;26&lt;/span&gt;
&lt;span class='line-number'&gt;27&lt;/span&gt;
&lt;span class='line-number'&gt;28&lt;/span&gt;
&lt;span class='line-number'&gt;29&lt;/span&gt;
&lt;span class='line-number'&gt;30&lt;/span&gt;
&lt;span class='line-number'&gt;31&lt;/span&gt;
&lt;span class='line-number'&gt;32&lt;/span&gt;
&lt;span class='line-number'&gt;33&lt;/span&gt;
&lt;span class='line-number'&gt;34&lt;/span&gt;
&lt;span class='line-number'&gt;35&lt;/span&gt;
&lt;span class='line-number'&gt;36&lt;/span&gt;
&lt;span class='line-number'&gt;37&lt;/span&gt;
&lt;span class='line-number'&gt;38&lt;/span&gt;
&lt;span class='line-number'&gt;39&lt;/span&gt;
&lt;span class='line-number'&gt;40&lt;/span&gt;
&lt;span class='line-number'&gt;41&lt;/span&gt;
&lt;span class='line-number'&gt;42&lt;/span&gt;
&lt;span class='line-number'&gt;43&lt;/span&gt;
&lt;span class='line-number'&gt;44&lt;/span&gt;
&lt;span class='line-number'&gt;45&lt;/span&gt;
&lt;span class='line-number'&gt;46&lt;/span&gt;
&lt;span class='line-number'&gt;47&lt;/span&gt;
&lt;span class='line-number'&gt;48&lt;/span&gt;
&lt;span class='line-number'&gt;49&lt;/span&gt;
&lt;span class='line-number'&gt;50&lt;/span&gt;
&lt;span class='line-number'&gt;51&lt;/span&gt;
&lt;span class='line-number'&gt;52&lt;/span&gt;
&lt;span class='line-number'&gt;53&lt;/span&gt;
&lt;span class='line-number'&gt;54&lt;/span&gt;
&lt;span class='line-number'&gt;55&lt;/span&gt;
&lt;span class='line-number'&gt;56&lt;/span&gt;
&lt;span class='line-number'&gt;57&lt;/span&gt;
&lt;span class='line-number'&gt;58&lt;/span&gt;
&lt;span class='line-number'&gt;59&lt;/span&gt;
&lt;span class='line-number'&gt;60&lt;/span&gt;
&lt;span class='line-number'&gt;61&lt;/span&gt;
&lt;span class='line-number'&gt;62&lt;/span&gt;
&lt;span class='line-number'&gt;63&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='js'&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;ready&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;cookie&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pixiv_tabs&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nx"&gt;showTab&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;#pixiv_switch a&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;click&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;tab&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;prop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;id&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/tab/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;      &lt;span class="nx"&gt;showTab&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tab&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;showTab&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#test_switch a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;removeClass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;current&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#test_switch a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;eq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;addClass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;current&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;form#test table&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;hide&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;form#test table&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;eq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;fadeIn&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;  &lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test_tabs&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,{&lt;/span&gt;&lt;span class="nx"&gt;expires&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cm"&gt;/**&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cm"&gt; * Cookie plugin&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cm"&gt; *&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cm"&gt; * Copyright (c) 2006 Klaus Hartl (stilbuero.de)&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cm"&gt; * Dual licensed under the MIT and GPL licenses:&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cm"&gt; * http://www.opensource.org/licenses/mit-license.php&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cm"&gt; * http://www.gnu.org/licenses/gpl.html&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cm"&gt; *&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="cm"&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookie&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;undefined&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;expires&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;expires&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;expires&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;expires&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;number&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;expires&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toUTCString&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;expires&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;number&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                &lt;span class="nx"&gt;date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                &lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;expires&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                &lt;span class="nx"&gt;date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;expires&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="nx"&gt;expires&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;; expires=&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toUTCString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;; path=&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;domain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;domain&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;; domain=&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;secure&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;secure&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;; secure&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookie&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;=&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;encodeURIComponent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;expires&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;secure&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;cookieValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookie&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookie&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;cookies&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;cookie&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;substring&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;=&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                    &lt;span class="nx"&gt;cookieValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;decodeURIComponent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;substring&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                    &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;                &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;            &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;cookieValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;套用&lt;/h2&gt;

&lt;p&gt;這個步驟相對而言就比較簡單了，首先在想要套用選項的位置加入以下程式碼，並設定&lt;/p&gt;

&lt;figure class='code'&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;span class='line-number'&gt;2&lt;/span&gt;
&lt;span class='line-number'&gt;3&lt;/span&gt;
&lt;span class='line-number'&gt;4&lt;/span&gt;
&lt;span class='line-number'&gt;5&lt;/span&gt;
&lt;span class='line-number'&gt;6&lt;/span&gt;
&lt;span class='line-number'&gt;7&lt;/span&gt;
&lt;span class='line-number'&gt;8&lt;/span&gt;
&lt;span class='line-number'&gt;9&lt;/span&gt;
&lt;span class='line-number'&gt;10&lt;/span&gt;
&lt;span class='line-number'&gt;11&lt;/span&gt;
&lt;span class='line-number'&gt;12&lt;/span&gt;
&lt;span class='line-number'&gt;13&lt;/span&gt;
&lt;span class='line-number'&gt;14&lt;/span&gt;
&lt;span class='line-number'&gt;15&lt;/span&gt;
&lt;span class='line-number'&gt;16&lt;/span&gt;
&lt;span class='line-number'&gt;17&lt;/span&gt;
&lt;span class='line-number'&gt;18&lt;/span&gt;
&lt;span class='line-number'&gt;19&lt;/span&gt;
&lt;span class='line-number'&gt;20&lt;/span&gt;
&lt;span class='line-number'&gt;21&lt;/span&gt;
&lt;span class='line-number'&gt;22&lt;/span&gt;
&lt;span class='line-number'&gt;23&lt;/span&gt;
&lt;span class='line-number'&gt;24&lt;/span&gt;
&lt;span class='line-number'&gt;25&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class='php'&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;$option = get_options(&amp;#39;test_options&amp;#39;);&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;// checkbox 的情況&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;if ( $options[&amp;#39;test_checkbox&amp;#39;] ) {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  ...&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;} else {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  ...&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;// 也可使用以下寫法&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;$options[&amp;#39;test_checkbox&amp;#39;] ? ... : ...;&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;// text, textarea 的情況&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;if ( $options[&amp;#39;test_text&amp;#39;] ) {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  echo $options[&amp;#39;test_text&amp;#39;];&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  ...&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt; &lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;// select, radio 的情況&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;if ( $options[&amp;#39;test_select&amp;#39;] == &amp;#39;one&amp;#39; ) {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  ...&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;} elseif ( $options[&amp;#39;test_select&amp;#39;] == &amp;#39;two&amp;#39; ) {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  ...&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;} else {&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;  ...&lt;/span&gt;
&lt;/span&gt;&lt;span class='line'&gt;&lt;span class="x"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;參考出處&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://alisothegeek.com/2011/01/wordpress-settings-api-tutorial-1/"&gt;Extended WordPress Settings API Tutorial&lt;/a&gt; &lt;br/&gt;
&lt;a href="http://www.chipbennett.net/2011/02/17/incorporating-the-settings-api-in-wordpress-themes"&gt;Incorporating the Settings API in WordPress Themes&lt;/a&gt; &lt;br/&gt;
&lt;a href="http://codex.wordpress.org/Main_Page"&gt;WordPress Codex&lt;/a&gt; &lt;br/&gt;
&lt;a href="https://github.com/carhartl/jquery-cookie"&gt;jQuery cookie plugin&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;後記&lt;/h2&gt;

&lt;p&gt;這大概是我寫過最長的一篇文章，內容可能會有點枯燥乏味、充滿錯誤，&lt;del&gt;而且一張萌圖都沒有&lt;/del&gt;，各位客倌就把這當成一篇筆記文章吧！&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=mAwlmi9dl_4:4TyDbdmdBpI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=mAwlmi9dl_4:4TyDbdmdBpI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/mAwlmi9dl_4" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/05/22/how-to-use-settings-api/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Pixiv Custom 2.0 更新！代碼更精簡，功能更豐富！]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/SRZLQuLjElQ/" />
    <updated>2011-04-12T00:00:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/04/12/pixiv-custom-2-0-update</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-5o1uImwKbQ4/TxkIkc1zPHI/AAAAAAAAD_4/1u-RW9a85L0/s0/pixivcustom-2.0.jpg" alt="其實這張圖與本文內容沒什麼關係，純粹當做福利罷了（id=18097491）" /&gt;&lt;/p&gt;

&lt;p&gt;這次的更新主要就只有四個字，「&lt;strong&gt;精簡代碼&lt;/strong&gt;」，讓檔案保持在上一版的大小外又&lt;strong&gt;新增&lt;/strong&gt;了一些更為詳細的後台設定，廢話不多說，以下就是本次的更新內容：&lt;/p&gt;

&lt;!-- more --&gt;


&lt;h2&gt;更新記錄&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;2.1.5

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 搜尋建議的寬度&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2.1.4

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 修復XSS漏洞&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;移除&lt;/strong&gt; - 自定分享連結的代碼&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2.1.3

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 搜尋取消按鈕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 文章側邊欄也能調整至與首頁側邊欄相同的寬度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 修復後台&lt;code&gt;textarea&lt;/code&gt;選項，前台顯示已編碼資料的問題&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 「更多分享」的動畫&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2.1.2

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - Google +1按鈕&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - Chrome現在也能使用自動載入功能了！&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 修復XSS漏洞，使用&lt;code&gt;esc_attr&lt;/code&gt;編碼每個選項資料&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 修復留言回覆通知的內容設定無法生效的問題&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 引用樣式&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2.1.1

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 自動載入功能 (實驗中，目前僅限Firefox, Opera能使用)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - Google +1按鈕&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2.1.0

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - HTML5&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 頁首選單中新增了一些預設的圖片可供使用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 簡化留言的AJAX程式碼，重新設計動畫，並加入了AJAX留言導覽&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - AJAX導覽現在也能適用於彙整、分類、標籤、搜尋頁面&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;移除&lt;/strong&gt; - 自定Logo功能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2.0.7

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 後台頁面新增「重設至預設值」功能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 改採用Settings API製作後台頁面，以增進安全性&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2.0.4

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 選單項目過多時樣式錯誤的問題&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2.0.2

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 增進AJAX導覽功能的安全性，但因此只限用於首頁導覽&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2.0

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - AJAX導覽功能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 選單無限深度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 新增&lt;code&gt;style-editor.css&lt;/code&gt;，使用者可在後台文章編輯頁面中檢視文章的實際樣貌（調整中）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 搜尋建議開關&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 連結顏色預覽&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 更細部的分享按鈕設定&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 留言回覆通知的設定預覽&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 後台自動隱藏停用的子選項&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新增&lt;/strong&gt; - 首頁 / 彙整頁面的文章預覽布局（完整 / 概要與縮圖 / 僅標題）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 重新編寫3欄式布局的結構，以優先載入主欄內容、加強SEO效能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 更改側邊欄的行為，側邊欄2尚未設定的情況下會先套用側邊欄1的內容，文章側邊欄尚未設定的情況下會先套用首頁側邊欄的內容&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 文章的分類頁籤以及後台分頁頁籤的外觀&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修改&lt;/strong&gt; - 後台英文翻譯、排版&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;移除&lt;/strong&gt; - 為了配合官方，原本的Logo設定功能改為進入「主題」→「頁首」設定&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;聽起來似乎沒什麼，事實上新增的功能也沒幾個，大部分的更動都是精簡代碼，所以為了增加霸氣，一次將版本號躍升到2.0。（毆）相容性尚未測試，不過應該能夠完美支援除IE外的所有瀏覽器，如果有任何問題的話，請在下方留言吧。&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=SRZLQuLjElQ:qwMdFbWdbNY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=SRZLQuLjElQ:qwMdFbWdbNY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/SRZLQuLjElQ" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/04/12/pixiv-custom-2-0-update/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[凱薩琳（キャサリン）]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/7em6iRhxEr4/" />
    <updated>2011-04-10T00:00:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/04/10/ps3-catherine</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-rbYBXCrDw_0/TxkK8x143uI/AAAAAAAAEAM/dogAmKyviRw/s0/839847_catherine.jpg" alt="※封面僅供參考" /&gt;&lt;/p&gt;

&lt;p&gt;文森特（Vincent）是個32歲的系統工程師，希望能夠一個人自由自在的生活。最近，凱薩琳（Katherine，簡稱K子）的不斷逼婚，讓文森特開始深思自己的未來，是否該找個安定的工作養活家庭？是否該停止漂泊與她共度下半輩子？&lt;/p&gt;

&lt;!-- more --&gt;


&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-nClejD7vHCc/TxkK9m7aIdI/AAAAAAAAEAY/iW6-hHUlcu8/s0/catherine-playstation-3-ps3-049.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;正當文森特在酒吧買醉，一名妙齡女子，凱薩琳（Catherine，簡稱C子）走進了酒吧，文森特的眼球馬上就被C子所吸引，不小心共度了激情的一夜，優柔寡斷的文森特不知該怎麼辦，只能兩邊繼續隱瞞下去。他每夜陷入可怕的惡夢，一個懲罰對愛情不忠者的地獄，只能不斷往上爬尋求倖存，而這就是遊戲的主軸。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-aIHl6Fj6xfc/TxkK7-311mI/AAAAAAAAEAE/k0mZRJs-6o0/s912/1aba0c61.jpg" alt="這只是一個屁股頭，絕對不是最終BOSS" /&gt;&lt;/p&gt;

&lt;p&gt;隨著時間的推進，身邊同樣的遭遇者漸漸犧牲，而K子也發現了文森特不忠的事實，文森特越來越焦慮，好不容易終於進入了第7夜，理論上應該是惡夢的盡頭，然而醒來卻發現，C子拿出刀子脅迫，打算殺害K子，然而卻不幸失手身亡，K子感到徬徨，決定與文森特分手。&lt;/p&gt;

&lt;p&gt;文森特體認到自己不能沒有K子的存在，回想過去一週，發現根本沒有人知道C子的存在，原來她只不過是文森特心中的理想投影，一切都是店長的陰謀！文森特與店長立了約定，一旦文森特逃出惡夢，就得釋放所有人，並給文森特的戀情一個機會。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-OOj0qzCnCAI/TxkK9OOZgsI/AAAAAAAAEAU/jOvpVDG6TNQ/s0/catherine_1130_06.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;終於從惡夢歸來，K子重新接納了文森特，兩人成為了戀人。（K子 NORMAL END）&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;以上是花了11小時以EASY難度完成的好人結局，老實說光是EASY模式就讓人有夠累了，不過身為一名神經病的自虐系玩家（ゝω・）u，目前正在以NORMAL模式進行人渣路線，沒有UNDO功能真的讓人很惱羞。&lt;/p&gt;&lt;/blockquote&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=7em6iRhxEr4:l3n7X27A22M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=7em6iRhxEr4:l3n7X27A22M:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/7em6iRhxEr4" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/04/10/ps3-catherine/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[XLD - Mac的無損格式解碼器]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/otpaEUuYX1Q/" />
    <updated>2011-03-27T13:54:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/03/27/xld-zh-tw</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-_DRIR7harQY/TxkB2ZS148I/AAAAAAAAD_g/AUPzFH4GNeA/s0/xld_tw_icon.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;這是一個專門解碼無損格式的軟體，可應用於：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://flac.sourceforge.net/"&gt;(Ogg) FLAC&lt;/a&gt; (.flac/oga)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.monkeysaudio.com/"&gt;Monkey&amp;#8217;s Audio&lt;/a&gt; (.ape)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.wavpack.com/"&gt;Wavpack&lt;/a&gt; (.wv)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.true-audio.com/"&gt;TTA&lt;/a&gt; (.tta)&lt;/li&gt;
&lt;li&gt;Apple Lossless (.m4a) [10.4 以上版本]&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.thbeck.de/Tak/Tak.html"&gt;TAK&lt;/a&gt; (.tak) [需安裝 &lt;a href="http://www.winehq.org/"&gt;Wine&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.etree.org/shncom.html"&gt;Shorten&lt;/a&gt; (.shn) [僅限於 SHN v3]&lt;/li&gt;
&lt;li&gt;AIFF, WAV……等等&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;也可以將CD打包成Cue格式，自動連接到網路上的資料庫獲取音軌名稱，直接編輯音軌的Metadata（中繼資料），只是目前還不支援Tak格式。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://tmkk.hp.infoseek.co.jp/xld/index.html"&gt;官方網站&lt;/a&gt;&lt;/p&gt;

&lt;!-- more --&gt;


&lt;h2&gt;程式擷圖&lt;/h2&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-rRWNRoGmEvo/TxkB4zpQyHI/AAAAAAAAD_o/fpC1XT73BqM/s0/110327-0001.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-L14Fld3ZyJI/TxkBy72w32I/AAAAAAAAD-0/7TIbWAr39lQ/s0/xld_tw_01.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-05XUW1N6eNI/TxkBzJa4ssI/AAAAAAAAD-8/XiDzTkRTNtc/s0/xld_tw_02.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-AIMuDdcxfxk/TxkBzoxLkNI/AAAAAAAAD_A/W0deFLd7SRg/s0/xld_tw_03.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-DdHVj_QHbSE/TxkB0JIYPJI/AAAAAAAAD_M/aXM0izUwuKA/s0/xld_tw_04.jpg" alt="" /&gt;&lt;/p&gt;

&lt;h2&gt;軟體使用方式&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;重要：若要分離 ape(flac,wav,etc) + cue 檔案，請從「檔案」→「開啟…」中開啟 .cue 檔。「開啟原始 PCM (bin/cue)」只能開啟原始 PCM 處理檔 (無標頭 wav) 檔案。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GUI版本的使用方式已包含在壓縮檔中的讀我檔案，以下是Command Line版本的使用方式：&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;% xld [-c cuesheet] [-e] [-f format] [-o outpath] [-t track] file&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;XLD 預設為解碼 WAVE 檔案，輸出檔案的副檔名為&lt;code&gt;.wav&lt;/code&gt;，您可使用下列參數指定編碼：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-c cuesheet&lt;/code&gt;: 使用&lt;code&gt;cue&lt;/code&gt;檔案分離音軌，若&lt;strong&gt;標題&lt;/strong&gt;或&lt;strong&gt;演出者&lt;/strong&gt;已包含於&lt;code&gt;cue&lt;/code&gt;檔案中，將會應用於輸出檔案的名稱。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-e&lt;/code&gt;：從輸出檔案中排除音軌間隙。音軌間隙預設會放在音軌的最後，當&lt;code&gt;-c&lt;/code&gt;未指定時，此參數會被忽略。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-f 格式&lt;/code&gt;：指定輸出檔案的格式，您可使用&lt;code&gt;wav&lt;/code&gt;. &lt;code&gt;aif&lt;/code&gt;, &lt;code&gt;raw_big&lt;/code&gt;, &lt;code&gt;raw_little&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-o 輸出路徑&lt;/code&gt;：指定輸出檔案的路徑或名稱。若輸出路徑為一資料夾，輸出檔案將會儲存於該資料夾中。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-t 音軌&lt;/code&gt;：若您指定&lt;code&gt;1&lt;/code&gt;，那麼只會解碼第 1 個音軌，同樣，若指定&lt;code&gt;2,4&lt;/code&gt; 只會解碼第 2, 4 個音軌。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--raw&lt;/code&gt;：以原始 PCM 讀取輸入檔案，您可使用以下 4 個參數。

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--取樣頻率 n&lt;/code&gt;：設定輸入檔案的取樣頻率 (Hz)，預設為 44100 Hz。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--位元數 n&lt;/code&gt;：設定輸入檔案的位元深度 (bit)，預設為 16 位元。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--聲道 n&lt;/code&gt;：設定輸入檔案的聲道數量：預設為 2 聲道。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--endian little/big&lt;/code&gt;：    設定輸入檔案的 endian，預設為&lt;code&gt;little&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;strong&gt;舉例：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;將&lt;code&gt;hoge.flac&lt;/code&gt;解碼為 AIFF 格式，並輸出於&lt;code&gt;~/Music&lt;/code&gt;。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;% xld -o ~/Music hoge.flac -f aif&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;使用 hoge.cue 分割 hoge.flac，並解碼第 1 和第 3 個音軌。&lt;/p&gt;

&lt;figure class='code'&gt;&lt;div class="highlight"&gt;&lt;table&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;pre class="line-numbers"&gt;&lt;span class='line-number'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code'&gt;&lt;pre&gt;&lt;code class=''&gt;&lt;span class='line'&gt;% xld -c hoge.cue -t 1,3 hoge.flac&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;h2&gt;教學&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;把下載的壓縮檔解壓縮。&lt;/li&gt;
&lt;li&gt;在XLD按右鍵，選擇「顯示套件內容」。&lt;/li&gt;
&lt;li&gt;將壓縮檔內的&lt;code&gt;zh_TW.iproj&lt;/code&gt;放入&lt;code&gt;Content&lt;/code&gt;→&lt;code&gt;Resources&lt;/code&gt;內。&lt;/li&gt;
&lt;li&gt;將壓縮檔內的&lt;code&gt;PlugIns&lt;/code&gt;資料夾放入&lt;code&gt;Content&lt;/code&gt;內。&lt;/li&gt;
&lt;li&gt;重新開啟XLD即可。&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&lt;strong&gt;或者，也可以直接下載完整檔案。&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;下載&lt;/h2&gt;

&lt;p&gt;僅本地化套件 (Ver. 0.2) [ &lt;a href="http://www.mediafire.com/download.php?pma2m06rbgplb7a"&gt;MediaFire&lt;/a&gt;｜&lt;a href="http://www.megaupload.com/?d=M9SNPA37"&gt;MegaUpload&lt;/a&gt; ]&lt;/p&gt;

&lt;p&gt;完整應用程式 (Ver. 0.2) [ &lt;a href="http://www.mediafire.com/download.php?uelz7no3p4y7q8e"&gt;MediaFire&lt;/a&gt;｜&lt;a href="http://www.megaupload.com/?d=KH76767U"&gt;MegaUpload&lt;/a&gt; ]&lt;/p&gt;

&lt;h2&gt;更新記錄&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;2011/3/27&lt;/strong&gt; XLD 20110312 (130.0) 中文化版本 Ver. 0.2 發佈，使用全新的Cocoa UI設計音軌列表視窗  &lt;br/&gt;
&lt;strong&gt;2010/6/6&lt;/strong&gt; XLD 20100518 (120.3) 中文化版本 Ver. 0.1 發佈&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=otpaEUuYX1Q:Yufp-4Xj6BY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=otpaEUuYX1Q:Yufp-4Xj6BY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/otpaEUuYX1Q" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/03/27/xld-zh-tw/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[絕命異次元 2]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/sRKiem5KQ0k/" />
    <updated>2011-03-08T13:37:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/03/08/ps3-dead-space-2</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-kps9-Q607i8/Txj_qk2bgWI/AAAAAAAAD-o/PDv-7SuLGaI/s0/DGAJ4L-A53936783000_4d4268999f023.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;石村號&lt;em&gt;（USG Ishimura）&lt;/em&gt;事件的三年後，主角艾薩克&lt;em&gt;（Issac）&lt;/em&gt;不斷受到已故女友妮可&lt;em&gt;（Nicole）&lt;/em&gt;的精神侵擾，艾薩克對於一切起源「Marker」的記憶感到模糊──或者該說是不願想起。&lt;/p&gt;

&lt;!-- more --&gt;




&lt;div class="video-container"&gt;&lt;object width="640" height="360"&gt;&lt;param name="movie" value="http://www.youtube.com/v/EtEEa4PU7ok?version=3&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/EtEEa4PU7ok?version=3&amp;amp;hl=en_US" type="application/x-shockwave-flash" width="640" height="360" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;


&lt;p&gt;故事一開始，艾薩克就受困於一艘名為「Sprawl」的廢棄太空船上的醫院，眼前充滿了驚悚可怕的怪物「Necromorph」。幸運的是，艾薩克得到了暫時的救贖，自稱黛安娜&lt;em&gt;（Diana）&lt;/em&gt;的指引他逃出的方向，還與另一個病人斯特羅斯&lt;em&gt;（Stross）&lt;/em&gt;聯繫上了，斯特羅斯不斷對艾薩克說：「我們能摧毀Marker。」&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-wy1w0stRfmw/Txj_oM9fGyI/AAAAAAAAD-M/lckEwSjQpio/s0/dead_space_2_kaefer_xxl_2010.jpg" alt="線上多人遊玩模式時，如果被殭屍抓到的話，根本就是到死之前都永遠不分開了，不知道是那些殭屍等級太高還是我太弱？" /&gt;&lt;/p&gt;

&lt;p&gt;然而艾薩克卻遭到了黛安娜的背叛，她的目的是為了建造Marker，突然，一架太空船使所有的窗戶破裂，黛安娜被吸進了太空，死狀慘烈，艾薩克雖然重獲自由，卻失去了方向。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-ZjRtv4iKIW4/Txj_prxS5RI/AAAAAAAAD-g/6-y1l6Nvy_4/s0/Deadspace2HallucinationNicoleTram.jpg" alt="艾薩克：「靠！怪我囉？」" /&gt;&lt;/p&gt;

&lt;p&gt;斯特羅斯再度與艾薩克聯絡，說明現在唯一的終極目標就是──摧毀Marker。為了達成這個目標，艾薩克往政府前進，途中遇到了警戒心強烈的女主角艾莉&lt;em&gt;（Eilie）&lt;/em&gt;，也遇到了斯特羅斯。然而好景不常，斯特羅斯的精神狀況愈來愈差，甚至強行挖下了艾莉的右眼，而艾薩克也沒多好，仍然不斷受到妮可的精神侵擾。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-zgusQrmUR7s/Txj_pKhOH_I/AAAAAAAAD-Y/tylEHsxnFI0/s0/dead-space-two-3.jpg" alt="嬰靈真的是一種很煩的怪物，叫聲尖銳動作又靈活，常常莫名其妙就跳到你背上了。" /&gt;&lt;/p&gt;

&lt;p&gt;艾薩克不得不殺害斯特羅斯，艾莉與艾薩克終於到達政府區，那裡已是一片殘破，艾薩克為了艾莉的安全，用僅剩的安全艙將艾莉送往安全的地方，而自己留在充滿怪物的政府區孤軍奮戰。途中，艾薩克終於對妮可的死亡感到釋懷，妮可的死亡早已成定局，無法改變──妮可第一次在遊戲中展露了笑容，溫柔的為艾薩克指示Marker的方向。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-uYdbf4d6fGI/Txj_oiCgEUI/AAAAAAAAD-U/p6jgW80CO9o/s0/dead-space-2_11-02-18_21-15-16-41.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;然而妮可的終極目標就是讓Marker更為完整&lt;em&gt;（Make us whole，老實說這句話在遊戲中不斷出現，我也不清楚到底什麼意思，以我的破英文來理解的話，姑且就差不多這樣吧？）&lt;/em&gt;，經過了一段奮戰後，艾薩克成功了擺脫了妮可的糾纏，也成功破壞了Marker。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;※劇情大部分都是參考自英文維基和個人的模糊記憶，可能有部分錯誤。上面的圖片都是隨便找的，和遊戲劇情沒有直接關係，應該沒有人會邊玩恐怖遊戲邊拿著相機拍照吧？&lt;/p&gt;&lt;p&gt;本作雖然是老梗的殭屍題材，不過劇情卻脫俗而不會乏味，遊戲性也相當十足，充滿了各種解謎要素以及不斷出來嚇人的可怕前女友，就算是和朋友一起在大白天玩也會被嚇到！&lt;/p&gt;&lt;/blockquote&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=sRKiem5KQ0k:mOXJ0Dz5dEs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=sRKiem5KQ0k:mOXJ0Dz5dEs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/sRKiem5KQ0k" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/03/08/ps3-dead-space-2/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[時空幻境：美德傳奇f]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/B53PdBfUqKI/" />
    <updated>2011-02-10T00:00:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/02/10/ps3-togf</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-cO1AtbKmAwk/TxkLr6qVPnI/AAAAAAAAEAo/aTbShvlqZ6Y/s0/P1170024.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;上週終於用自己存了半年的零用錢購入了PS3，連續玩了一週的情況下，使得網誌長達三週沒有文章更新，本來正在進行的網誌佈景更新也荒廢了，IS輕小說的介紹文章人氣還莫名其妙的衝破1000。&lt;/p&gt;

&lt;!--more--&gt;




&lt;div class="video-container"&gt;&lt;object width="640" height="360"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ZdH4YiiwnsY?version=3&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ZdH4YiiwnsY?version=3&amp;amp;hl=en_US" type="application/x-shockwave-flash" width="640" height="360" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;


&lt;p&gt;與主機一併購入了《&lt;a href="http://zh.wikipedia.org/zh-tw/%E7%BE%8E%E5%BE%B7%E5%82%B3%E5%A5%87"&gt;時空幻境：美德傳奇f&lt;/a&gt;》，劇情上有點老梗的作品，男主角「&lt;strong&gt;阿斯貝爾&lt;/strong&gt;」與同伴偶然發現了人形兵器「&lt;strong&gt;蘇菲&lt;/strong&gt;」，似乎失憶想不起自己的過去，因而啟發了男主角的同情心，想要幫助她找回記憶，即使得花上一輩子也在所不惜。（不管是動漫或是遊戲，為啥只會忘記名字與過去，而不會忘記語言與基礎知識之類的？我長年以來一直抱持著這種疑問）。一行人偶然在一次的冒險中，遭到惡魔「&lt;strong&gt;拉姆達&lt;/strong&gt;」的襲擊，蘇菲奉獻自己的生命而擊敗了拉姆達，從此消失，阿斯貝爾下定決心守護身邊的一切。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-OGIUZamvP-g/TxkLrE6MKlI/AAAAAAAAEAk/j0rA40aF7c4/s0/P1170020.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;很抱歉沒有拍遊戲畫面，我總不可能像個 白痴 一樣邊拿相機邊玩遊戲吧，如果PS3有啥擷圖的外掛就好了&lt;/p&gt;

&lt;p&gt;一開始還有點不習慣這遊戲的系統，不能隨便無腦攻擊，而是攻擊與防禦不斷往復。後期讓人有點脫力，因為每個小怪都得打半分鐘，還要解一堆有夠機掰的機關，明明眼前有這麼緊急的危難，我個堂堂男主角還要在這玩魔術方塊，這些看起來根本跳得過去的路徑最好一個18歲成人過不去啦！蘭斯洛特借你，直接給林北突破天際啦！&lt;/p&gt;

&lt;p&gt;撇開這些機掰的迷宮不談，劇情與遊戲性都還算不錯，唯一的缺憾就是畫面太差吧。解完這遊戲的所有要素之後，想玩的遊戲還有絕命異次元（自虐用）、托托莉、征服者、凱薩琳，PS3真是一個榨光打工錢的鬼機器&amp;#8230;。&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=B53PdBfUqKI:VqlxAJSq-2c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=B53PdBfUqKI:VqlxAJSq-2c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/B53PdBfUqKI" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/02/10/ps3-togf/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Espresso - Code is Poetry]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/zzY-mM1VGkU/" />
    <updated>2011-01-20T00:00:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/01/20/espresso-tw</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-fq_pUVby7Jw/TxkMxhIUwTI/AAAAAAAAEBQ/FoQJoDbuyEU/s0/espresso_icon.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;Espresso是一款強大的網頁開發軟體，支援&lt;strong&gt;CSS, HTML, JavaScript, PHP,XML, XSL&lt;/strong&gt;的編輯，還可利用名為「&lt;strong&gt;Sugar&lt;/strong&gt;」的附加套件讓Espresso支援各式各樣的程式語言，諸如&lt;strong&gt;CodeIgniter, jQuery, Objective-C, Ruby, etc.&lt;/strong&gt;，完全不是問題！除此之外，內建簡易方便的網頁發佈功能，可支援&lt;strong&gt;FTP, SFTP, FTP/SSL, Amazon S3&lt;/strong&gt;。簡單的介面下隱藏著強大的擴充性！&lt;/p&gt;

&lt;p&gt;&lt;a href="http://macrabbit.com/espresso/"&gt;官方網站&lt;/a&gt;｜&lt;a href="http://sugars.macrabbit.com/"&gt;第三方 Sugars 套件下載&lt;/a&gt;&lt;/p&gt;

&lt;!--more--&gt;


&lt;h2&gt;程式擷圖&lt;/h2&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-VsLniVUW6tI/TxkMvLMn8gI/AAAAAAAAEA0/e4kQw_s-87g/s0/espresso_01.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-04kOva1xq28/TxkMvsHshDI/AAAAAAAAEA4/hCC4DotNSQc/s0/espresso_02.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-HDb5Ewcf4_M/TxkMwe2ipuI/AAAAAAAAEBE/6wQhIuiZNts/s0/espresso_03.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-ldExtrWsxG8/TxkMxQGdOMI/AAAAAAAAEBM/F_ZGUbkIfIE/s0/espresso_04.jpg" alt="" /&gt;&lt;/p&gt;

&lt;h2&gt;教學&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;把下載的壓縮檔解壓縮。&lt;/li&gt;
&lt;li&gt;在Espresso按右鍵，選擇「&lt;strong&gt;顯示套件內容&lt;/strong&gt;」。&lt;/li&gt;
&lt;li&gt;刪除應用程式&lt;code&gt;Content&lt;/code&gt;→&lt;code&gt;Resources&lt;/code&gt;內的所有副檔名為&lt;code&gt;nib&lt;/code&gt;的檔案（或者放入&lt;code&gt;English.Iproj&lt;/code&gt;），以及刪除&lt;code&gt;CodeFoldingActions.xml&lt;/code&gt;, &lt;code&gt;ConnectionActions.xml&lt;/code&gt;, &lt;code&gt;FileActions.xml&lt;/code&gt;, &lt;code&gt;PublishActions.xml&lt;/code&gt;, &lt;code&gt;TabActions.xml&lt;/code&gt;這幾個XML檔案。&lt;/li&gt;
&lt;li&gt;將壓縮檔內&lt;code&gt;Resource&lt;/code&gt;資料夾內的檔案放入應用程式的&lt;code&gt;Content&lt;/code&gt;→&lt;code&gt;Resources&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;刪除或備份應用程式&lt;code&gt;SharedSupport&lt;/code&gt;→&lt;code&gt;Sugars&lt;/code&gt;內的所有檔案，放入壓縮檔&lt;code&gt;SharedSupport&lt;/code&gt;→&lt;code&gt;Sugars&lt;/code&gt;內的所有檔案。&lt;/li&gt;
&lt;li&gt;重新開啟Espresso即可。&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&lt;strong&gt;由於Espresso的程式架構問題，這次的步驟稍顯複雜了些，嫌麻煩的話可以直接下載完整檔案。&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;下載&lt;/h2&gt;

&lt;p&gt;僅本地化套件 (Ver 0.1) [ &lt;a href="http://www.mediafire.com/download.php?jnus25855sx9teb"&gt;MediaFire&lt;/a&gt;｜&lt;a href="http://www.megaupload.com/?d=WUV9FA1P"&gt;Megaupload&lt;/a&gt; ]&lt;/p&gt;

&lt;p&gt;完整應用程式 (Ver 0.1) [ &lt;a href="http://www.mediafire.com/download.php?ryl2mryoewa65pb"&gt;MediaFire&lt;/a&gt;｜&lt;a href="http://www.megaupload.com/?d=7RDARMAC"&gt;Megaupload&lt;/a&gt; ]&lt;/p&gt;

&lt;h2&gt;後記&lt;/h2&gt;

&lt;p&gt;這次的副標實在是沒梗了orz，乾脆直接拿WordPress的副標「&lt;em&gt;Code is Poetry&lt;/em&gt;」來用。我從很久以前就想要翻譯Espresso了，不過因為懶得整理散亂的語言檔案，所以一直拖到現在，不過有些地方的字串還是沒辦法收集到，畢竟我沒有Espresso的原始碼實在不方便作業，沒有翻譯到的部份就算了，這次順便翻譯了說明檔案，有些地方翻譯不通順請多指教唄。&lt;/p&gt;

&lt;h2&gt;更新記錄&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;2011/1/20&lt;/strong&gt; Espresso 1.1.2 中文化版本 Ver 0.1 發佈&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=zzY-mM1VGkU:76X1Ex_8Ay0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=zzY-mM1VGkU:76X1Ex_8Ay0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/zzY-mM1VGkU" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/01/20/espresso-tw/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[MPlayer OSX Extended rev14]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/eESKS6fDomE/" />
    <updated>2011-01-10T00:00:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/01/10/mosxex-rev13-zh-tw</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-DqntkHUpngk/TxkOzX0fc8I/AAAAAAAAEBc/QWyZSt2KH4I/s0/mosxex_rev13_icon.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;MPlayer OSX Extended為MPlayer OSX的加強版，新增了多種參數，使用優秀的MPlayer內核，可支援各種影片及音訊格式（MP4, MKV, RM, AVI, FLV, WMV&amp;#8230;），當然外掛字幕也不是問題&amp;lt;（SRT, ASS）。此外，更使用支援64位元的多線程解碼器，HD影片播放可更加順暢！&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.mplayerosx.ch/"&gt;官方網站&lt;/a&gt;&lt;/p&gt;

&lt;!--more--&gt;


&lt;h2&gt;介面擷圖&lt;/h2&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-LDJsx243Xos/TxkOzukFi0I/AAAAAAAAEBk/iHfp8ElzX3M/s0/mosxex_rev13-1.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-o98cYHoHKdk/TxkO0RvauZI/AAAAAAAAEBs/ySr3LVLtibM/s0/mosxex_rev13-2.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-aI2yoDNw9k4/TxkO0ngN3vI/AAAAAAAAEB0/g1zDNGRVQ2U/s0/mosxex_rev13-3.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-OWOWM9s5kcU/TxkO1CaGAGI/AAAAAAAAEB8/X56s_SowLp0/s0/mosxex_rev13-4.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-VcK3LzwESpk/TxkO1yvAufI/AAAAAAAAECA/YeNflShGY7U/s0/mosxex_rev13-5.jpg" alt="" /&gt;&lt;/p&gt;

&lt;h2&gt;教學&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;請先將MPlayer OSX Extended更新至&lt;strong&gt;rev14&lt;/strong&gt;，並&lt;strong&gt;先讓程式執行完字體快取的安裝&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;把下載的壓縮檔解壓縮。&lt;/li&gt;
&lt;li&gt;在MPlayer OSX Extended上按右鍵，選擇「顯示套件內容」。&lt;/li&gt;
&lt;li&gt;進入&lt;code&gt;Contents&lt;/code&gt;→&lt;code&gt;Resources&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;使壓縮檔中的&lt;code&gt;zh_TW.lproj&lt;/code&gt;覆蓋原檔案，之後重開MPlayer OSX Extended即可。&lt;/li&gt;
&lt;li&gt;若要安裝按鈕中文化，重複上述步驟，將圖片覆蓋到&lt;code&gt;Contents&lt;/code&gt;→&lt;code&gt;Resources&lt;/code&gt;即可。&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&lt;strong&gt;或者，也可以直接下載完整檔案。&lt;/strong&gt; &lt;br/&gt;
（如果語言檔案仍無法使用，請將&lt;code&gt;zh_TW.lproj&lt;/code&gt;更名成&lt;code&gt;English.lproj&lt;/code&gt;並取代原本的檔案。）&lt;/p&gt;

&lt;h2&gt;下載&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;rev14 Ver. 0.3：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;僅本地化套件 [ &lt;a href="http://www.mediafire.com/download.php?3gl7bdc4ml88fto"&gt;MediaFire&lt;/a&gt;｜&lt;a href="http://www.megaupload.com/?d=9NMOLQX9"&gt;Megaupload&lt;/a&gt; ]&lt;/p&gt;

&lt;p&gt;完整應用程式 [ &lt;a href="http://www.mediafire.com/download.php?kaxkc8s9lsc6gcv"&gt;MediaFire&lt;/a&gt;｜&lt;a href="http://www.megaupload.com/?d=M7OMIO0L"&gt;Megaupload&lt;/a&gt; ]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;rev12 Ver. 0.4：&lt;/strong&gt;（已終止更新，若有rmvb播放問題請使用此版本）&lt;/p&gt;

&lt;p&gt;僅本地化套件 [ &lt;a href="http://www.mediafire.com/download.php?0e3opzt006gmevw"&gt;MediaFire&lt;/a&gt;｜&lt;a href="http://www.megaupload.com/?d=AXAKICOC"&gt;Megaupload&lt;/a&gt; ]&lt;/p&gt;

&lt;p&gt;完整應用程式 [ &lt;a href="http://www.mediafire.com/download.php?d8ra34n5r7w1cwu"&gt;MediaFire&lt;/a&gt;｜&lt;a href="http://www.megaupload.com/?d=47V7UJPO"&gt;Megaupload&lt;/a&gt; ]&lt;/p&gt;

&lt;p&gt;按鈕中文化 [ &lt;a href="http://www.mediafire.com/download.php?8krxqg9i07fx63w"&gt;MediaFire&lt;/a&gt;｜&lt;a href="http://www.megaupload.com/?d=UFJYAMUO"&gt;Megaupload&lt;/a&gt; ]&lt;/p&gt;

&lt;h2&gt;後記&lt;/h2&gt;

&lt;p&gt;這次試著從原始檔抓了一些可以中文化的字串來翻譯，稍微提昇了一點中文化程度，不過我想對使用者而言，最重要的應該還是rmvb的播放問題吧，這次似乎還是沒有解決&amp;#8230;？&lt;/p&gt;

&lt;h2&gt;更新記錄&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;2011/1/10&lt;/strong&gt; 程式版本更新至rev14，中文化版本隨之更新至Ver. 0.3&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2010/04/11&lt;/strong&gt; 修正部分字串，更新至ver0.2&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=eESKS6fDomE:fsFzfmmFBSQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=eESKS6fDomE:fsFzfmmFBSQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/eESKS6fDomE" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/01/10/mosxex-rev13-zh-tw/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Transmission - 啟動你的BT引擎]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/AScyDKokNwg/" />
    <updated>2011-01-08T00:00:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/01/08/transmission-tw</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-CJ2B4SClwEY/TxkwCARMvII/AAAAAAAAECs/wQZGBstK-nw/s0/transmission_icon.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;簡潔快速的BT軟體，可完整支援DHT, PEX, Magnet，甚至內建Web UI，讓你在外也能下載BT。&lt;/p&gt;

&lt;p&gt;我不喜歡uTorrent for Mac的原因主要是因為資源耗太兇了（CPU佔用率超高），而且介面都是Windows的影子，但功能和WIndows比起來根本是閹割再閹割，RSS, Magnet的功能根本就沒有。而毒蛙&amp;#8230;Java寫的軟體就算了吧。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.transmissionbt.com/"&gt;官方網站&lt;/a&gt;&lt;/p&gt;

&lt;!--more--&gt;


&lt;h2&gt;程式擷圖&lt;/h2&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-ABbSvb8enXE/Txkv-7pIU9I/AAAAAAAAECQ/cmhNf37nAus/s0/transmission_01.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-Ai95y1Uh8bQ/Txkv_QDiDaI/AAAAAAAAECc/3lka8rhBTmM/s0/transmission_02.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-32hlPBn8EFc/Txkv_skZt1I/AAAAAAAAECU/e_lFy6WHkFw/s0/transmission_03.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-gE3i4AUF7qM/Txkv_7ueYnI/AAAAAAAAECk/RjHlQ12m1tQ/s0/transmission_04.jpg" alt="" /&gt;&lt;/p&gt;

&lt;h2&gt;教學&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;把下載的壓縮檔解壓縮。&lt;/li&gt;
&lt;li&gt;在Transmission按右鍵，選擇「顯示套件內容」。&lt;/li&gt;
&lt;li&gt;將壓縮檔內的&lt;code&gt;zh_TW.iproj&lt;/code&gt;放入&lt;code&gt;Content&lt;/code&gt;→&lt;code&gt;Resources&lt;/code&gt;內。&lt;/li&gt;
&lt;li&gt;重新開啟Transmission即可。&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&lt;strong&gt;或者，也可以直接下載完整檔案。&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;下載&lt;/h2&gt;

&lt;p&gt;僅本地化套件 (Ver 0.2) [ &lt;a href="http://www.mediafire.com/download.php?4i3a8abava7qdsk"&gt;MediaFire&lt;/a&gt;｜&lt;a href="http://www.megaupload.com/?d=FT8F4OHY"&gt;Megaupload&lt;/a&gt; ]&lt;/p&gt;

&lt;p&gt;完整應用程式 (Ver 0.2) [ &lt;a href="http://www.mediafire.com/download.php?tmp7lawd3qbqc4w"&gt;MediaFire&lt;/a&gt;｜&lt;a href="http://www.megaupload.com/?d=8YO5JIR0"&gt;Megaupload&lt;/a&gt; ]&lt;/p&gt;

&lt;h2&gt;後記&lt;/h2&gt;

&lt;p&gt;Transmission自從踏入2.0之後就沒有中文化了（原本的中文化作者怎麼了？），而且效能還變得有些差，直到2.0.3之後，差不多回到原本的效能了，才決定自己動手做中文化，改天再去通知官方吧。&lt;/p&gt;

&lt;p&gt;話說寒假時一直聯絡XLD的作者都沒有回音，反倒是BetterZip的作者一聯絡就馬上回應了XD。&lt;/p&gt;

&lt;h2&gt;更新記錄&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;2011/1/8&lt;/strong&gt; Transmission 2.1.3 中文化版本 Ver 0.2 發佈&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2010/8/6&lt;/strong&gt; Transmission 2.0.3 中文化版本 Ver 0.1 發佈&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=AScyDKokNwg:SrFpVzsP_TM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=AScyDKokNwg:SrFpVzsP_TM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/AScyDKokNwg" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/01/08/transmission-tw/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[HandBrake - 來杯濃縮DVD果汁！]]></title>
    <link href="http://feedproxy.google.com/~r/zespia/~3/y8Y1Vg18cKM/" />
    <updated>2011-01-06T00:00:00+08:00</updated>
    <id>http://zespia.tw/blog/2011/01/06/handbrake-tw</id>
    <content type="html">&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-RAav_pg_86Q/TxkyYtRSE7I/AAAAAAAAEDU/kvlgaqgzDYw/s0/handbrake_icon.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;HandBrake是一款Mac上歷史悠久又相當好用的轉檔程式，支援64bit，讓轉檔效能更加快速，可輸出MP4和MKV檔案，唯一的缺憾大概就是不支援RMVB。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://handbrake.fr"&gt;官方網站&lt;/a&gt;｜&lt;a href="http://macuknow.com/node/564"&gt;MacUKnow教學&lt;/a&gt;&lt;/p&gt;

&lt;!--more--&gt;


&lt;h2&gt;程式擷圖&lt;/h2&gt;

&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-xgKZdIf_1sU/TxkyW3RnbyI/AAAAAAAAEC4/2fPMUZC49ds/s0/handbrake_01.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-Zl2lIoS89Uc/TxkyXPuu4jI/AAAAAAAAEDA/EK-101A9ZmQ/s0/handbrake_02.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-gzBndfGxk3g/TxkyX-W83jI/AAAAAAAAEDI/zwe9SFhQvGI/s0/handbrake_03.jpg" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-TUnEYOz6A48/TxkyYZX6NqI/AAAAAAAAEDM/sumII35vUsc/s0/handbrake_04.jpg" alt="" /&gt;&lt;/p&gt;

&lt;h2&gt;教學&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;把下載的壓縮檔解壓縮。&lt;/li&gt;
&lt;li&gt;在HandBrake按右鍵，選擇「顯示套件內容」。&lt;/li&gt;
&lt;li&gt;將壓縮檔內的&lt;code&gt;zh_TW.iproj&lt;/code&gt;放入&lt;code&gt;Content&lt;/code&gt;→&lt;code&gt;Resources&lt;/code&gt;內。&lt;/li&gt;
&lt;li&gt;重新開啟HandBrake即可。&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&lt;strong&gt;或者，也可以直接下載完整檔案。&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;下載&lt;/h2&gt;

&lt;p&gt;僅本地化套件 (Ver. 0.1) [ &lt;a href="http://www.mediafire.com/download.php?h1etw2eem09g9d0"&gt;MediaFire&lt;/a&gt;｜&lt;a href="http://www.megaupload.com/?d=Z2O5ZQMN"&gt;Megaupload&lt;/a&gt; ]&lt;/p&gt;

&lt;p&gt;完整應用程式 (Ver. 0.1) [ &lt;a href="http://www.mediafire.com/download.php?m1il8tx9vt32w7m"&gt;MediaFire&lt;/a&gt;｜&lt;a href="http://www.megaupload.com/?d=C6C9V6A5"&gt;Megaupload&lt;/a&gt; ]&lt;/p&gt;

&lt;p&gt;※僅提供64bit版本的完整應用程式，若需要32bit，請自行至官網下載，本人不保證中文化套件與32bit程式的相容性。&lt;/p&gt;

&lt;h2&gt;後記&lt;/h2&gt;

&lt;p&gt;這次歷經許久，再度接到了委託，本程式因為程式撰寫的限制，部分字串無法翻譯，本人沒有Objective-C的撰寫經驗，也為了避免更新麻煩，所以還是會有部分保留著英文。&lt;/p&gt;

&lt;p&gt;話說MegaUpload這免費空間真是越來越棒了，現在連驗證碼都不需要，後台的管理介面也變得更加美觀，更不用提快得要命的速度了。&lt;/p&gt;

&lt;h2&gt;更新記錄&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;2011/1/6&lt;/strong&gt; HandBrake 0.9.5 中文化版本 Ver. 0.1 發佈&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/zespia?a=y8Y1Vg18cKM:VTqbfifD8ds:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/zespia?a=y8Y1Vg18cKM:VTqbfifD8ds:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/zespia?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/zespia/~4/y8Y1Vg18cKM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://zespia.tw/blog/2011/01/06/handbrake-tw/</feedburner:origLink></entry>
  
</feed>

