<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>網站製作學習誌-CSS</title>
<link>http://blog.roodo.com/jaceju/archives/cat_13619.html</link>
<description>
首頁
讀者留言版
管理介面












_uacct = &quot;UA-450710-1&quot;;
urchinTracker();
</description>
<language>zh-tw</language>
<generator>Roodo Blog System</generator>
<copyright>All Rights Reserved</copyright>
<atom:link href="http://blog.roodo.com/jaceju/archives/cat_13619.xml" rel="self" type="application/rss+xml" />
<item>
	<title>[CSS] 多種分頁樣式範例</title>
	<description><![CDATA[
	前陣子看到一篇分頁樣式的文章，趁最近在寫文件時順便整理一下：
HTML 長成這樣子：
&lt;div class=&quot;pagination digg&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;disabled&quot;&gt;第一頁&lt;/li&gt;
&lt;li class=&quot;disabled&quot;&gt;上一頁&lt;/li&gt;
&lt;li class=&quot;current&quot;&gt;1&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;?page=2&quot;&gt;2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;?page=3&quot;&gt;3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;?page=4&quot;&gt;4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;?page=5&quot;&gt;5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;?page=2&quot;&gt;下一頁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;?page=5&quot;&gt;最後一頁&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
其中 digg 就是可以代換的樣式，可以用的樣式我都整理到一個 CSS 檔了。至於怎麼產生這個 HTML ，就請大家自行發揮所長囉。 
以下是每個樣式長的樣子：


	]]>
	</description>
	<content:encoded><![CDATA[
	<p>前陣子看到一篇分頁樣式的文章，趁最近在寫文件時順便整理一下：</p>
<p>HTML 長成這樣子：</p>
<pre><code>&lt;div class=&quot;pagination <strong>digg</strong>&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;disabled&quot;&gt;第一頁&lt;/li&gt;
&lt;li class=&quot;disabled&quot;&gt;上一頁&lt;/li&gt;
&lt;li class=&quot;current&quot;&gt;1&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;?page=2&quot;&gt;2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;?page=3&quot;&gt;3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;?page=4&quot;&gt;4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;?page=5&quot;&gt;5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;?page=2&quot;&gt;下一頁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;?page=5&quot;&gt;最後一頁&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</code></pre>
<p>其中 digg 就是可以代換的樣式，可以用的樣式我都整理到一個 <a href="http://www.jaceju.net/resources/pagination_styles/pagination.zip">CSS</a> 檔了。至於怎麼產生這個 HTML ，就請大家自行發揮所長囉。 </p>
<p>以下是每個樣式長的樣子：</p>

		<a href="http://blog.roodo.com/jaceju/archives/3936285.html">(繼續閱讀...)</a>;
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/3936285.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/3936285.html</guid>
	<category>CSS</category>
	<pubDate>Wed, 15 Aug 2007 20:02:24 +0800</pubDate>
</item>
<item>
	<title>[CSS] Blueprint CSS framework</title>
	<description><![CDATA[
	Blueprint CSS framework

舊的專案網頁
新的專案網頁 (放在 Google Code 裡) 

看起來是滿有趣的東西，有空可以試試看。

	]]>
	</description>
	<content:encoded><![CDATA[
	<h2>Blueprint CSS framework</h2>
<ul>
<li><a href="http://bjorkoy.com/blueprint/tutorial.html">舊的專案網頁</a></li>
<li><a href="http://code.google.com/p/blueprintcss/">新的專案網頁</a> (放在 Google Code 裡) </li>
</ul>
<p>看起來是滿有趣的東西，有空可以試試看。</p>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/3879349.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/3879349.html</guid>
	<category>CSS</category>
	<pubDate>Tue, 07 Aug 2007 16:07:47 +0800</pubDate>
</item>
<item>
	<title>100% 用純 CSS 解決 IE 下拉式選單覆蓋圖層的問題</title>
	<description><![CDATA[
	上次用 JavaScript 解決下拉式選單覆蓋圖層的問題 。這次發現一個用純 CSS 來解決的技巧：
HedgerWow`s Blog &gt; 100% pure CSS Fix for IE Z-INDEX Bug &gt; &lt;SELECT&gt; Free Layer
主要也是用 iframe 來解決，但是完全不用 JavaScript (裡面的 JavaScript 是用來拖曳圖層的) 。 
HedgerWow`s Blog 真是一個很不錯的參考網站，感謝 chihwen 。

	]]>
	</description>
	<content:encoded><![CDATA[
	<p>上次用 JavaScript <a href="http://blog.roodo.com/jaceju/archives/137542.html">解決下拉式選單覆蓋圖層的問題</a> 。這次發現一個用純 CSS 來解決的技巧：</p>
<p><a href="http://www.hedgerwow.com/">HedgerWow`s Blog</a> &gt; <a href="http://blog.360.yahoo.com/blog-ktYYK_s5fqJ2Hu1ryv2QSL0-?p=160" target="_blank">100% pure CSS Fix for IE Z-INDEX Bug</a> &gt; <a href="http://www.hedgerwow.com/360/bugs/css-select-free.html" target="_blank">&lt;SELECT&gt; Free Layer</a></p>
<p>主要也是用 iframe 來解決，但是完全不用 JavaScript (裡面的 JavaScript 是用來拖曳圖層的) 。 </p>
<p><a href="http://www.hedgerwow.com/" target="_blank">HedgerWow`s Blog</a> 真是一個很不錯的參考網站，感謝 chihwen 。</p>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/1101032.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/1101032.html</guid>
	<category>CSS</category>
	<pubDate>Thu, 09 Feb 2006 13:03:44 +0800</pubDate>
</item>
<item>
	<title>蠟筆小新 CSS 聖誕快樂版型</title>
	<description><![CDATA[
	聖誕節到了，換個新版面 ~~
用 Firefox 看會有不同的驚喜喔。
	]]>
	</description>
	<content:encoded><![CDATA[
	<p>聖誕節到了，換個新版面 ~~</p>
<p>用 Firefox 看會有不同的驚喜喔。</p>		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/907160.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/907160.html</guid>
	<category>CSS</category>
	<pubDate>Sat, 24 Dec 2005 18:47:19 +0800</pubDate>
</item>
<item>
	<title>再談 Blog 的邊欄掉下去</title>
	<description><![CDATA[
	通常 Link 會跑到下方，都是內容太寬的關係，這常會發生在 IE 上。因為 IE 會遇到較寬的內容時，會自動把版面撐開，導致 Link 往下掉。
	]]>
	</description>
	<content:encoded><![CDATA[
	<p>通常 Link 會跑到下方，都是內容太寬的關係，這常會發生在 IE 上。因為 IE 會遇到較寬的內容時，會自動把版面撐開，導致 Link 往下掉。</p>		<a href="http://blog.roodo.com/jaceju/archives/735677.html">(繼續閱讀...)</a>;
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/735677.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/735677.html</guid>
	<category>CSS</category>
	<pubDate>Thu, 17 Nov 2005 12:25:04 +0800</pubDate>
</item>
<item>
	<title>在 IE 上解決版面被過長程式碼撐開的問題</title>
	<description><![CDATA[
	有時候顯示過長的程式碼時，在 IE 上面會很討厭地把我們的版面撐開，造成 CSS 版型顯示不正確。不過我一直執著於標準化的方式，而忽略掉一些方法。它們雖然都不能夠有效地完整解決這個問題，至少對 IE 而言已經足夠了。
利用以下的 CSS 屬性，能讓已經預先格式化的文字在視窗的邊緣換行：
&lt;style type=&quot;text/css&quot;&gt;
/*&lt;![CDATA[*/
.precode {
  display: block;
  white-space: -moz-pre-wrap; /* Mozilla */
  white-space: pre-wrap; /* CSS 2.1 */
}

/*]]&gt;*/
&lt;/style&gt;
&lt;!--[if IE]&gt;
&lt;style type=&quot;text/css&quot;&gt;
/*&lt;![CDATA[*/ 
.precode {
  white-space: pre; /* CSS2 */
  word-wrap: break-word; /* IE */
}
/*]]&gt;*/
&lt;/style&gt;
說明如下：

word-wrap: break-word;  - 視窗邊界換行，僅 IE 支援。也可以用 word-brak: break-all; 但不會保持英文單字的完整性。
white-space: pre;  -  對某標籤作預先格式化，所有標準瀏覽器皆支援。
white-space: -moz-pre-wrap; - 預先格式化，但在元素邊界換行，僅 Mozilla (Firefox) 支援。
white-space: pre-wrap; - 預先格式化，但在元素邊界換行，僅 Opera 支援。

這次用的方法雖然不標準，且瀏覽器的支援性不足，但至少能讓我們的版型能在多數狀況下能夠順利被呈現。
註：也可以參考這篇：Whitespace and generated content (目前 Firefox 觀看會不正常)。

	]]>
	</description>
	<content:encoded><![CDATA[
	<p>有時候顯示過長的程式碼時，在 IE 上面會很討厭地把我們的版面撐開，造成 CSS 版型顯示不正確。不過我一直執著於標準化的方式，而忽略掉一些方法。它們雖然都不能夠有效地完整解決這個問題，至少對 IE 而言已經足夠了。</p>
<p>利用以下的 CSS 屬性，能讓已經預先格式化的文字在視窗的邊緣換行：</p>
<pre><code>&lt;style type=&quot;text/css&quot;&gt;
/*&lt;![CDATA[*/
.precode {
  display: block;
  white-space: -moz-pre-wrap; /* Mozilla */
  white-space: pre-wrap; /* CSS 2.1 */
}

/*]]&gt;*/
&lt;/style&gt;
&lt;!--[if IE]&gt;
&lt;style type=&quot;text/css&quot;&gt;
/*&lt;![CDATA[*/ 
.precode {
  white-space: pre; /* CSS2 */
  word-wrap: break-word; /* IE */
}
/*]]&gt;*/
&lt;/style&gt;</code></pre>
<p>說明如下：</p>
<ul>
<li><p><span>word-wrap: break-word; </span> - 視窗邊界換行，僅 IE 支援。也可以用 <span>word-brak: break-all;</span> 但不會保持英文單字的完整性。</p></li>
<li><p><span>white-space: pre; </span> -  對某標籤作預先格式化，所有標準瀏覽器皆支援。</p></li>
<li><p><span>white-space: -moz-pre-wrap;</span> - 預先格式化，但在元素邊界換行，僅 Mozilla (Firefox) 支援。</p></li>
<li><p><span>white-space: pre-wrap;</span> - 預先格式化，但在元素邊界換行，僅 Opera 支援。</p></li>
</ul>
<p>這次用的方法雖然不標準，且瀏覽器的支援性不足，但至少能讓我們的版型能在多數狀況下能夠順利被呈現。</p>
<p class="note">註：也可以參考這篇：<a href="http://cheeaun.phoenity.com/weblog/2005/06/whitespace-and-generated-content.html">Whitespace and generated content</a> (目前 Firefox 觀看會不正常)。</p>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/392230.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/392230.html</guid>
	<category>CSS</category>
	<pubDate>Sat, 20 Aug 2005 10:28:18 +0800</pubDate>
</item>
<item>
	<title>蠟筆小新 CSS 版型大進擊</title>
	<description><![CDATA[
	無聊之餘，弄了個蠟筆小新的版型。
這個版型唯一的難度在於 content 的寬度比 banner 來的窄，而缺點是小新的頭太大了。
圖是我自己用 Fireworks 畫的，拉到最底下可以看到小新的腳。
而電影常常搞個幕後花絮，那我也來簡單介紹一下我的小新版型是怎麼做的。首先準備小新的圖，並切成頭、身體背景及腳。

接下來在腦袋裡想像一下網頁的結構：


 #container 的實際寬度為 760px ，但內容寬度為 600px ，這是為了置放 #content 裡的文字，使它們能夠縮在小新的身體裡。所以我把 #container 左右兩邊的 padding 設為 80px (760px 減掉 600px 再除以 2) 。
因為 #container 的寬度被限制在 600px ，但是 #banner 及 #footer 的實際寬度必須維持在 760px ，所以我把 #banner 和 #footer 設為 position: relative 後，把它們往左拉回 80px ，這樣小新的頭和腳才能與身體對齊。
接下來的 #content 及 #links 部份，其實和兩欄式版型的製作方式雷同。
把架構固定後，接著就把小新的頭、腳及身體當做背景放上去。因為頭和腳的大小剛好固定，所以我就不特意再下什麼語法去調整。但是身體因為是 #container 的背景，所以只能用縱軸重覆，不然會版型的左右兩邊會跑出奇怪的白色區塊。
不過有個地方很麻煩，那就是樂多在 #footer 後面沒事加了一個 div ，而且沒 id 值。這樣一來我就沒辦法把它藏起來，只好把 body 的底部邊界往上拉。可是 IE 和 Firefox 對這個方式解釋又不同，所以用 IE 看的話，就會發現小新的腳底有個奇怪的白色區塊。當然我是有辦法解決，但就是懶字訣作祟...
最後的裝飾就是苦工了，我是直接拿舊的 site.css 來改的。沒辦法，我這個人對沒什麼意義的事就很懶得去做。

 CSS 碼就不貼了，有興趣的朋友用 Firefox 自行找吧。
只要觀念對了， CSS 不會很難的。

	]]>
	</description>
	<content:encoded><![CDATA[
	<p>無聊之餘，弄了個蠟筆小新的版型。</p>
<p>這個版型唯一的難度在於 content 的寬度比 banner 來的窄，而缺點是小新的頭太大了。</p>
<p>圖是我自己用 Fireworks 畫的，拉到最底下可以看到小新的腳。</p>
<p>而電影常常搞個幕後花絮，那我也來簡單介紹一下我的小新版型是怎麼做的。</p><p>首先準備小新的圖，並切成頭、身體背景及腳。</p>
<p><img src="http://jaceju.staff.doubleservice.com/tutorial/shin/shin01.gif" alt="小新的身體被我切開了" /></p>
<p>接下來在腦袋裡想像一下網頁的結構：</p>
<p><img src="http://jaceju.staff.doubleservice.com/tutorial/shin/shin02.gif" alt="小新的身體被我切開了" /></p>
<ol>
<li><p> #container 的實際寬度為 760px ，但內容寬度為 600px ，這是為了置放 #content 裡的文字，使它們能夠縮在小新的身體裡。所以我把 #container 左右兩邊的 padding 設為 80px (760px 減掉 600px 再除以 2) 。</p></li>
<li><p>因為 #container 的寬度被限制在 600px ，但是 #banner 及 #footer 的實際寬度必須維持在 760px ，所以我把 #banner 和 #footer 設為 position: relative 後，把它們往左拉回 80px ，這樣小新的頭和腳才能與身體對齊。</p></li>
<li><p>接下來的 #content 及 #links 部份，其實和兩欄式版型的製作方式雷同。</p></li>
<li><p>把架構固定後，接著就把小新的頭、腳及身體當做背景放上去。因為頭和腳的大小剛好固定，所以我就不特意再下什麼語法去調整。但是身體因為是 #container 的背景，所以只能用縱軸重覆，不然會版型的左右兩邊會跑出奇怪的白色區塊。</p>
<p>不過有個地方很麻煩，那就是樂多在 #footer 後面沒事加了一個 div ，而且沒 id 值。這樣一來我就沒辦法把它藏起來，只好把 body 的底部邊界往上拉。可是 IE 和 Firefox 對這個方式解釋又不同，所以用 IE 看的話，就會發現小新的腳底有個奇怪的白色區塊。當然我是有辦法解決，但就是懶字訣作祟...</p></li>
<li><p>最後的裝飾就是苦工了，我是直接拿舊的 site.css 來改的。沒辦法，我這個人對沒什麼意義的事就很懶得去做。</p></li>
</ol>
<p> CSS 碼就不貼了，有興趣的朋友用 Firefox 自行找吧。</p>
<p>只要觀念對了， CSS 不會很難的。</p>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/228015.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/228015.html</guid>
	<category>CSS</category>
	<pubDate>Wed, 29 Jun 2005 22:22:52 +0800</pubDate>
</item>
<item>
	<title>樂多三欄式 CSS 樣版入門</title>
	<description><![CDATA[
	常常有人問樂多如何製作三欄樣版？以目前的樂多 DOM 不太可能單純以 CSS 完成，不過這幾天看了許多網友的 Blog ，發現一個滿有趣的方法。透過搭配 JavaScript (不是 Java 喔，別搞混了) ，我們來試試這個超級任務。
補充：樂多目前有三欄版型可供選擇，大家可以直接使用它們或修改它們。這篇文章的目的在於記錄我自己在 CSS 三欄式版面的製作心得，大家參考看看就好囉。
首先，我們準備一個 JavaScript 檔，內容為：
document.write('&lt;/div&gt;&lt;div id=&quot;links2&quot;&gt;');
儲存時，命名為 links2.js ，然後將它上傳到樂多的檔案空間，並記下上傳後的 URL。
接著我們到樂多 Blog 的管理介面，新增一個 JavaScript 型態的插入欄位 (Links2)，URL 就把剛剛記下來的 URL 貼上去。
然後我們把新增的這個 JavaScript 的插入欄位順序調整到我們想分離的位置之前，如下圖：

如此一來，從「版權聲明」以下的插入欄位，都會被歸到 #links2 去了。
接下來就是我們的重頭戲 - CSS ： 
html, body {
	margin: 0;
	padding: 0;
	font-size: 10pt;
}

#container {
	position: relative;
	left: 50%;
	padding-top: 100px;
	margin-left: -380px;
	width: 760px;
}

#banner {
	position: absolute;
	top: 0;
	left: 0;
	height: 100px;
}

#links {
	position: relative;
	top: 0;
	float: left;
	width: 150px;
	margin-right: -150px;
	background-color: Aqua;
}

#links2 {
	position: absolute;
	width: 150px;
	top: 100px;
	left: 0px;
	background-color: Fuchsia;
}

#content {
	position: relative;
	top: 0;
	padding-left: 150px;
	width: 510px;
	float: left;
	background-color: #FFEBCD;
}
這裡僅大概介紹其設定方式：

  將 #container 置中，並在上面留下 100px 的高度。
   將 #banner 設為 position: absolute ，並將它的高度設為 100px 且移到 #container 的左上角。
  將 #content 和 #links 設為向左浮動，可參考先前的「樂多 Blog 排版入門」。
  #links2 設為 position: absolute ，然後將它貼在 #container 的左方，從上數下來 100px 的位置。 
  #content 在左方留下 150px 的空間，以容納 #links2 。

剩下就交給有興趣的朋友自行變化囉。

	]]>
	</description>
	<content:encoded><![CDATA[
	<p>常常有人問樂多如何製作三欄樣版？以目前的樂多 DOM 不太可能單純以 CSS 完成，不過這幾天看了許多網友的 Blog ，發現一個滿有趣的方法。透過搭配 JavaScript (不是 Java 喔，別搞混了) ，我們來試試這個超級任務。</p>
<p>補充：樂多目前有三欄版型可供選擇，大家可以直接使用它們或修改它們。這篇文章的目的在於記錄我自己在 CSS 三欄式版面的製作心得，大家參考看看就好囉。</p>
<p>首先，我們準備一個 JavaScript 檔，內容為：</p>
<pre><code>document.write('&lt;/div&gt;&lt;div id=&quot;links2&quot;&gt;');</code></pre>
<p>儲存時，命名為 links2.js ，然後將它上傳到樂多的檔案空間，並記下上傳後的 URL。</p>
<p>接著我們到樂多 Blog 的管理介面，新增一個 JavaScript 型態的插入欄位 (Links2)，URL 就把剛剛記下來的 URL 貼上去。</p>
<p>然後我們把新增的這個 JavaScript 的插入欄位順序調整到我們想分離的位置之前，如下圖：</p>
<p><img alt="" src="http://www.jaceju.net/resources/3fields/01.gif" width="543" height="438" /></p>
<p>如此一來，從「版權聲明」以下的插入欄位，都會被歸到 #links2 去了。</p>
<p>接下來就是我們的重頭戲 - CSS ： </p>
<pre><code>html, body {
	margin: 0;
	padding: 0;
	font-size: 10pt;
}

#container {
	position: relative;
	left: 50%;
	padding-top: 100px;
	margin-left: -380px;
	width: 760px;
}

#banner {
	position: absolute;
	top: 0;
	left: 0;
	height: 100px;
}

#links {
	position: relative;
	top: 0;
	float: left;
	width: 150px;
	margin-right: -150px;
	background-color: Aqua;
}

#links2 {
	position: absolute;
	width: 150px;
	top: 100px;
	left: 0px;
	background-color: Fuchsia;
}

#content {
	position: relative;
	top: 0;
	padding-left: 150px;
	width: 510px;
	float: left;
	background-color: #FFEBCD;
}</code></pre>
<p>這裡僅大概介紹其設定方式：</p>
<ol>
  <li>將 #container 置中，並在上面留下 100px 的高度。</li>
  <li> 將 #banner 設為 position: absolute ，並將它的高度設為 100px 且移到 #container 的左上角。</li>
  <li>將 #content 和 #links 設為向左浮動，可參考先前的「樂多 Blog 排版入門」。</li>
  <li>#links2 設為 position: absolute ，然後將它貼在 #container 的左方，從上數下來 100px 的位置。 </li>
  <li>#content 在左方留下 150px 的空間，以容納 #links2 。</li>
</ol>
<p>剩下就交給有興趣的朋友自行變化囉。</p>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/187558.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/187558.html</guid>
	<category>CSS</category>
	<pubDate>Mon, 13 Jun 2005 15:58:56 +0800</pubDate>
</item>
<item>
	<title>CSS 技巧：表單</title>
	<description><![CDATA[
	表單一直是網頁設計裡，一門重大的學問。這裡介紹大家一些簡單的表單設計技巧，希望對大家有所幫助。
表單的邊界問題
在多數瀏覽器預設的表單樣式，會讓表單上下會有一小塊空間，如下所示：

原始碼如下：
&lt;form name=&quot;form1&quot; id=&quot;form1&quot; method=&quot;post&quot; action=&quot;&quot;&gt;
 &lt;table width=&quot;400&quot; border=&quot;1&quot;&gt;
   &lt;tr&gt;
     &lt;td&gt;文 字 欄 位 1&lt;/td&gt;
     &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;text1&quot; /&gt;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;文字欄位2&lt;/td&gt;
     &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;text2&quot; /&gt;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td valign=&quot;top&quot;&gt;多行文字欄位&lt;/td&gt;
     &lt;td&gt;&lt;textarea name=&quot;text3&quot; cols=&quot;25&quot; rows=&quot;10&quot;&gt;&lt;/textarea&gt;&lt;/td&gt;
   &lt;/tr&gt;
 &lt;/table&gt;
&lt;/form&gt;
所以一般在設計表單時，都會像上面這樣利用表格來編排輸入欄位，再將 &lt;form&gt; 標籤藏在 &lt;table&gt; 裡，如下： 
&lt;table width=&quot;400&quot; border=&quot;1&quot;&gt;
  &lt;form name=&quot;form1&quot; id=&quot;form1&quot; method=&quot;post&quot; action=&quot;&quot;&gt;
   &lt;tr&gt;
     &lt;td&gt;文 字 欄 位 1&lt;/td&gt;
     &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;text1&quot; /&gt;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;文字欄位2&lt;/td&gt;
     &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;text2&quot; /&gt;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td valign=&quot;top&quot;&gt;多行文字欄位&lt;/td&gt;
     &lt;td&gt;&lt;textarea name=&quot;text3&quot; cols=&quot;25&quot; rows=&quot;10&quot;&gt;&lt;/textarea&gt;&lt;/td&gt;
   &lt;/tr&gt;
  &lt;/form&gt;
&lt;/table&gt;
但是這不符合 W3C 的標準，而且在 Dreamweaver 編輯時，也不容易點選表單。
透過 CSS ，我們能夠很容易地解決這個問題，我們只需設定：
&lt;form name=&quot;form1&quot; id=&quot;form1&quot; method=&quot;post&quot; action=&quot;&quot; style=&quot;margin: 0;&quot;&gt;
 &lt;table width=&quot;400&quot; border=&quot;1&quot;&gt;
   &lt;tr&gt;
     &lt;td&gt;文 字 欄 位 1&lt;/td&gt;
     &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;text1&quot; /&gt;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;文字欄位2&lt;/td&gt;
     &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;text2&quot; /&gt;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td valign=&quot;top&quot;&gt;多行文字欄位&lt;/td&gt;
     &lt;td&gt;&lt;textarea name=&quot;text3&quot; cols=&quot;25&quot; rows=&quot;10&quot;&gt;&lt;/textarea&gt;&lt;/td&gt;
   &lt;/tr&gt;
 &lt;/table&gt;
&lt;/form&gt;
如果要讓整個網站的表單都能依此規則作用，那麼我們僅需在共用的 CSS 檔案裡加入：
form {
  margin: 0;
}
但是除非必要，否則大多數情況還是不建議大家使用表格來編排輸入欄位。
用 CSS 來編排輸入欄位
不過不使用表格的話，怎麼做表單的排版呢？
我們利用 &lt;p&gt; 標籤和 &lt;label&gt; 標籤來完成這項任務，如下所示：
&lt;form name=&quot;form1&quot; id=&quot;form1&quot; method=&quot;post&quot; action=&quot;&quot;&gt;
&lt;p&gt;
  &lt;label for=&quot;text1&quot;&gt;文 字 欄 位 1&lt;/label&gt;
  &lt;input type=&quot;text&quot; name=&quot;text1&quot; id=&quot;text1&quot; accesskey=&quot;1&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;label for=&quot;text2&quot;&gt;文字欄位2&lt;/label&gt;
  &lt;input type=&quot;text&quot; name=&quot;text2&quot; id=&quot;text2&quot; accesskey=&quot;2&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;label for=&quot;text3&quot;&gt;多行文字欄位&lt;/label&gt;
  &lt;textarea name=&quot;text3&quot; id=&quot;text3&quot; cols=&quot;40&quot; rows=&quot;10&quot; accesskey=&quot;3&quot;&gt;&lt;/textarea&gt;
&lt;/p&gt;
&lt;/form&gt;
實際上的畫面如下圖：
 
當然這樣標籤並沒有對齊，所以我們透過 CSS 來搞定它。
首先當然是把 &lt;form&gt; 的邊界去除：
form {
  margin: 0;
}

接著，我們讓 &lt;label&gt; 變成浮動，並固定它的寬度為 100px ，當然你可以視你的標籤文字寬度來決定。
form label {
  float: left;
  width: 100px;
}
最後，為了不讓接下來的輸入欄位被上一層的浮動 &lt;label&gt; 影響，我們再設定 &lt;form&gt; 裡的 &lt;p&gt; 標籤： 
form p {
  clear: both;
}

這樣一來，就如下圖所示：

是不是很簡單呢？
當然，除了不用表格之外，這樣的表單我還加上點選文字標籤 &lt;label&gt; ，或是利用鍵盤上的 [ALT] 加上數字鍵，就能夠將輸入焦點自動放到對應的 &lt;input&gt; 欄位上。這些都是無障礙網頁規範裡的一小部份，大家可以多多留意喔。

	]]>
	</description>
	<content:encoded><![CDATA[
	<p>表單一直是網頁設計裡，一門重大的學問。這裡介紹大家一些簡單的表單設計技巧，希望對大家有所幫助。</p>
<h2>表單的邊界問題</h2>
<p>在多數瀏覽器預設的表單樣式，會讓表單上下會有一小塊空間，如下所示：</p>
<p><img src="http://www.jaceju.net/resources/form/form1.gif" alt="" width="459" height="315" /></p>
<p>原始碼如下：</p>
<pre><code>&lt;form name=&quot;form1&quot; id=&quot;form1&quot; method=&quot;post&quot; action=&quot;&quot;&gt;
 &lt;table width=&quot;400&quot; border=&quot;1&quot;&gt;
   &lt;tr&gt;
     &lt;td&gt;文 字 欄 位 1&lt;/td&gt;
     &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;text1&quot; /&gt;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;文字欄位2&lt;/td&gt;
     &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;text2&quot; /&gt;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td valign=&quot;top&quot;&gt;多行文字欄位&lt;/td&gt;
     &lt;td&gt;&lt;textarea name=&quot;text3&quot; cols=&quot;25&quot; rows=&quot;10&quot;&gt;&lt;/textarea&gt;&lt;/td&gt;
   &lt;/tr&gt;
 &lt;/table&gt;
&lt;/form&gt;</code></pre>
<p>所以一般在設計表單時，都會像上面這樣利用表格來編排輸入欄位，再將 &lt;form&gt; 標籤藏在 &lt;table&gt; 裡，如下： </p>
<pre><code>&lt;table width=&quot;400&quot; border=&quot;1&quot;&gt;
  <span style="color: red; font-weight: bold;">&lt;form name=&quot;form1&quot; id=&quot;form1&quot; method=&quot;post&quot; action=&quot;&quot;&gt;</span>
   &lt;tr&gt;
     &lt;td&gt;文 字 欄 位 1&lt;/td&gt;
     &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;text1&quot; /&gt;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;文字欄位2&lt;/td&gt;
     &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;text2&quot; /&gt;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td valign=&quot;top&quot;&gt;多行文字欄位&lt;/td&gt;
     &lt;td&gt;&lt;textarea name=&quot;text3&quot; cols=&quot;25&quot; rows=&quot;10&quot;&gt;&lt;/textarea&gt;&lt;/td&gt;
   &lt;/tr&gt;
  <span style="color: red; font-weight: bold;">&lt;/form&gt;</span>
&lt;/table&gt;</code></pre>
<p>但是這不符合 W3C 的標準，而且在 Dreamweaver 編輯時，也不容易點選表單。</p>
<p>透過 CSS ，我們能夠很容易地解決這個問題，我們只需設定：</p>
<pre><code>&lt;form name=&quot;form1&quot; id=&quot;form1&quot; method=&quot;post&quot; action=&quot;&quot; <strong><font color="#FF0000">style=&quot;margin: 0;&quot;</font></strong>&gt;
 &lt;table width=&quot;400&quot; border=&quot;1&quot;&gt;
   &lt;tr&gt;
     &lt;td&gt;文 字 欄 位 1&lt;/td&gt;
     &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;text1&quot; /&gt;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;文字欄位2&lt;/td&gt;
     &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;text2&quot; /&gt;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td valign=&quot;top&quot;&gt;多行文字欄位&lt;/td&gt;
     &lt;td&gt;&lt;textarea name=&quot;text3&quot; cols=&quot;25&quot; rows=&quot;10&quot;&gt;&lt;/textarea&gt;&lt;/td&gt;
   &lt;/tr&gt;
 &lt;/table&gt;
&lt;/form&gt;</code></pre>
<p>如果要讓整個網站的表單都能依此規則作用，那麼我們僅需在共用的 CSS 檔案裡加入：</p>
<pre><code>form {
  margin: 0;
}</code></pre>
<p>但是除非必要，否則大多數情況還是不建議大家使用表格來編排輸入欄位。</p>
<h2>用 CSS 來編排輸入欄位</h2>
<p>不過不使用表格的話，怎麼做表單的排版呢？</p>
<p>我們利用 &lt;p&gt; 標籤和 &lt;label&gt; 標籤來完成這項任務，如下所示：</p>
<pre><code>&lt;form name=&quot;form1&quot; id=&quot;form1&quot; method=&quot;post&quot; action=&quot;&quot;&gt;
&lt;p&gt;
  &lt;label for=&quot;text1&quot;&gt;文 字 欄 位 1&lt;/label&gt;
  &lt;input type=&quot;text&quot; name=&quot;text1&quot; id=&quot;text1&quot; accesskey=&quot;1&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;label for=&quot;text2&quot;&gt;文字欄位2&lt;/label&gt;
  &lt;input type=&quot;text&quot; name=&quot;text2&quot; id=&quot;text2&quot; accesskey=&quot;2&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;label for=&quot;text3&quot;&gt;多行文字欄位&lt;/label&gt;
  &lt;textarea name=&quot;text3&quot; id=&quot;text3&quot; cols=&quot;40&quot; rows=&quot;10&quot; accesskey=&quot;3&quot;&gt;&lt;/textarea&gt;
&lt;/p&gt;
&lt;/form&gt;</code></pre>
<p>實際上的畫面如下圖：</p>
<p><img src="http://www.jaceju.net/resources/form/form2.gif" alt="未套用 CSS 的表單示意圖" width="415" height="270" /> </p>
<p>當然這樣標籤並沒有對齊，所以我們透過 CSS 來搞定它。</p>
<p>首先當然是把 &lt;form&gt; 的邊界去除：</p>
<pre><code>form {
  margin: 0;
}
</code></pre>
<p>接著，我們讓 &lt;label&gt; 變成浮動，並固定它的寬度為 100px ，當然你可以視你的標籤文字寬度來決定。</p>
<pre><code>form label {
  float: left;
  width: 100px;
}</code></pre>
<p>最後，為了不讓接下來的輸入欄位被上一層的浮動 &lt;label&gt; 影響，我們再設定 &lt;form&gt; 裡的 &lt;p&gt; 標籤： </p>
<pre><code>form p {
  clear: both;
}
</code></pre>
<p>這樣一來，就如下圖所示：</p>
<p><img src="http://www.jaceju.net/resources/form/form3.gif" alt="套用 CSS 後的表單示意圖" width="414" height="264" /></p>
<p>是不是很簡單呢？</p>
<p>當然，除了不用表格之外，這樣的表單我還加上點選文字標籤 &lt;label&gt; ，或是利用鍵盤上的 [ALT] 加上數字鍵，就能夠將輸入焦點自動放到對應的 &lt;input&gt; 欄位上。這些都是無障礙網頁規範裡的一小部份，大家可以多多留意喔。</p>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/165959.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/165959.html</guid>
	<category>CSS</category>
	<pubDate>Fri, 03 Jun 2005 17:42:22 +0800</pubDate>
</item>
<item>
	<title>樂多Blog排版入門</title>
	<description><![CDATA[
	這篇文章，算是我在 CSS 的學習中，一個段落的結束。其實 CSS 是非常有趣且多變的，多看看國內外一些利用 CSS 製作出來的優等網站，你就會了解 CSS 有多麼強大。這裡，我將以「樂多 Blog 」的版型製作，作為這篇文章的主題。在這之前，建議您先看看之前我所寫的 CSS 排版觀念系列文章。
第一步 了解頁面結構 
要化粧前，也得先知道自己的臉屬於何種性質；同理我們也得先掌握樂多的 Blog 的頁面結構 (DOM) 。 
檢視自己的樂多 Blog 首頁原始碼，你就可以看到以下的結構：

每個色塊都是一個 DIV ，而這裡我直接用 CSS 的表示法來標示 DIV 的 ID 。
再來我們分析 #content 和 #links ，如下圖：

一樣地，我用 CSS 表示法來標示每個區塊的 CLASS 屬性。
#content 就是我們的 Blog 記事區，而 #links 則是功能選單的集合體，這裡我們暫時不對細部的區塊作討論。
第二步 決定版型
沒有適當的動線規劃及版面設計，再豐富的網站內容也是枉然。在決定我們的 Blog 要長什麼樣子之前，應該要思考如何讓瀏覽者能夠方便地操作你所提供的功能。另外，一個好的視覺設計也是必要的，除非你想標新立異，那麼舒服的色系及精緻的版面都是你應該要追求的。
不過這裡我不多談如何設計這些視覺上的效果，畢竟我並非設計系出身；相關的知識可以請教身邊有美術涵養的高手們，他們會給你很好的建議。
這裡我決定實作全版面兩欄式的版型，其中 #container 及 #content 的寬度會隨著瀏覽視窗大小作動態調整，而 #links 則是固定寬度且靠在視窗右邊，如下圖：

至於背景圖的部份，就請大家自行發揮天份製作囉。
第三步 用 CSS 製作初步的畫面
首先，我們要把 body 和 #container 設定好，如下：
html, body {
  margin: 0;
}

#container {
  position: relative;
  width: 100%;
}
首先我們將 html 和 body 的邊界設為 0 ，然後再把 #container 的寬度設為 100% 。 
 (註：你可以在建構版型時，利用背景色來讓自己知道區塊跑到哪兒去了。)
接下來，我們指定 #banner 的高度：
#banner {
  height: 80px;
}
這裡我假設背景圖的高度是 80px ，當然你可以視需要自行更改。
然後我們利用浮動技巧，將 #content 放到左邊， #links 放到右邊。我們不指定 #content 的寬度，因為它會變動。我們僅需要固定住 #links 的寬度即可 (假設為 200px ) 。
#content {
  float: left;
}

#links {
  float: right;
  width: 200px;
}
咦？為什麼還是沒有效果？ #links 並沒有跑到 #content 的右邊？而是跑到 #content 的右下方去了：

這是因為現在 #content 的內容區寬度是 100% ，所以 #links 被 #content 擠了下來。解決的方式是把 #links 的 margin-left 指定為負值，讓它往左拉回 200px ：
#links {
  float: right;
  width: 200px;
  margin-left: -200px;
}
好啦，現在版面變成這樣：

呃...可是 #content 的內容和 #links 的內容疊在一起了，怎麼辦？很簡單，我們用 padding-right 把 #cotent 的內容往左擠進來：
#content {
  float: left;
  padding-right: 200px;
}
#footer 因為 #content 和 #links 浮動的關係，自動跑到上面來了。我們只要設定：
#footer {
  clear: both;
  height: 40px;
}
 雖然 IE 不用設定就會正常 (其實是不正常) ，但是為了其他瀏覽器，一定要設定。
好啦，現在實際上的完整版面會變成這樣了：

#content 的可視寬度其實是和 #container 的內容區寬度一樣為 100%，虛線部份才是 #content 的內容區。
有幾點要注意：

#content 的內容寬度不可過長，不然會讓 #links 往下掉。
#footer 不一定會在 #content 下方出現，這要看 #content 和 #links 哪個元素較高而定。 
#banner 、 #content 、 #links 、 #footer 屬於結構元素，所以除非必要，否則它們的 margin 、 padding 都應該要設成 0px ( DIV 預設值) 。
如果要讓 #links 和 #content 左右對調，那麼就把 #content 和 #links 的 float 、 padding 和 margin 中之 left 改成 right ， right 改成 left 。 
配合這篇「如何正確實作出固定寬度且置中的版型」，只要更動 body 和 #container 的樣式，你就可以讓這個版型置中囉。

完整的 CSS 如下：
html, body {
  margin: 0;
}

#container {
  position: relative;
  width: 100%;
}

#banner {
  height: 100px;
}

#content {
  float: left;
  padding-right: 200px;
}

#links {
  float: right;
  width: 200px;
  margin-left: -200px;
}

#footer {
  clear: both;
  height: 40px;
}
第四步 裝飾其他部份
當然，上面的步驟只是把主要的版面結構定下來，裡面的彩妝還沒完成。礙於我的藝術涵養，就靠大家自行設計喜歡的樣式囉。不過還是有一些東西分享給大家。
前面我在這篇「拆開你的 CSS 吧！」提到 CSS 維護的觀念，在我們把上面主要的結構定義好後，就可以利用外部的 CSS 檔來裝飾其他部份。例如我們可以建立一個 banner.css ，然後把 #banner 裡相關的 CSS 設定在這裡：
banner.css
h1.blogtitle {
  display: block;
  font-size: 12pt;
  padding-top: 10px;
  padding-left: 20px;
  margin: 0;
}

h1 a {
  color: #669;
  text-decoration: none;
}
然後在 site.css 裡把它給 import 進來，這樣一來只要更換不同的 site.css 或 banner.css ，就能夠隨心所欲地更換樣式或版型。
而細部的部份呢？像是 #content 裡的 .date 和 .blogbody ？一樣的方式，我們建立一個 content.css ，然後在裡面設定 .date 和 .blogbody 的樣式就可以了。
第五步 CSS 放在哪裡？ 
在第四步時我們建立了一堆 CSS 檔，那麼應該放在哪裡才能讓網頁讀到它們呢？
其實 @import 指令可以接受外部的 url ，因此在你找到空間並上傳這些 CSS 檔案以後，可以在你的 site.css 上方寫這樣的指令：
@import url(http://xxx.xxx.xxx.xxx/xxxx.css); 
這樣一來就能讓你的 site.css 引入外部 CSS 樣式了。
補述 (IE 的 Bug) 
不知道大家有沒有發現，如果 #links 的內容長於 #content 的內容時，在 IE 上面預覽的話，會發現 #footer 竟然是貼在 #content 的下方，如下圖：

這是 IE 的 Bug ，說實在的，也令人非常討厭。這時上面的 CSS 我們就得做點修正，方法是讓 #content 和 #links 都向左浮動。當然，如果要反過來讓 #links 在 #content 的左方，那麼就把這兩者都向右浮動。這樣一來，在大多數的瀏覽器上都能夠正常顯示了。
補述 (固定寬度置中的版型)
在固定寬度置中的版型裡，我們要額外指定 #content 的寬度，例如：
#content {
  float: left;
  padding-right: 200px;
  width: 560px; /* 760 - 200 = 560 */
}
為什麼呢？因為我發現多數瀏覽器沒辦法很正確判斷出 #content 內容區應有的寬度，因此就得指定 #content 內容區的寬度。至於技術細節，就請知道的網友告知一下吧。
&nbsp;
結語
雖然這裡提供的 CSS 並不能真正用在實務上，但是它俱備了多數 CSS 排版的基礎觀念。因此大家只要了解這些原理以後，相信往後一定能創造更優秀的版型來

	]]>
	</description>
	<content:encoded><![CDATA[
	<p>這篇文章，算是我在 CSS 的學習中，一個段落的結束。其實 CSS 是非常有趣且多變的，多看看國內外一些利用 CSS 製作出來的優等網站，你就會了解 CSS 有多麼強大。這裡，我將以「樂多 Blog 」的版型製作，作為這篇文章的主題。在這之前，建議您先看看之前我所寫的 CSS 排版觀念系列文章。</p>
<h2>第一步 了解頁面結構 </h2>
<p>要化粧前，也得先知道自己的臉屬於何種性質；同理我們也得先掌握樂多的 Blog 的頁面結構 (DOM) 。 </p>
<p>檢視自己的樂多 Blog 首頁原始碼，你就可以看到以下的結構：</p>
<p><img alt="" src="http://www.jaceju.net/resources/blog/blog1.png" width="200" height="300" /></p>
<p>每個色塊都是一個 DIV ，而這裡我直接用 CSS 的表示法來標示 DIV 的 ID 。</p>
<p>再來我們分析 #content 和 #links ，如下圖：</p>
<p><img alt="" src="http://www.jaceju.net/resources/blog/blog2.png" width="200" height="300" /><img alt="" src="http://www.jaceju.net/resources/blog/blog3.png" width="200" height="300" /></p>
<p>一樣地，我用 CSS 表示法來標示每個區塊的 CLASS 屬性。</p>
<p>#content 就是我們的 Blog 記事區，而 #links 則是功能選單的集合體，這裡我們暫時不對細部的區塊作討論。</p>
<h2>第二步 決定版型</h2>
<p>沒有適當的動線規劃及版面設計，再豐富的網站內容也是枉然。在決定我們的 Blog 要長什麼樣子之前，應該要思考如何讓瀏覽者能夠方便地操作你所提供的功能。另外，一個好的視覺設計也是必要的，除非你想標新立異，那麼舒服的色系及精緻的版面都是你應該要追求的。</p>
<p>不過這裡我不多談如何設計這些視覺上的效果，畢竟我並非設計系出身；相關的知識可以請教身邊有美術涵養的高手們，他們會給你很好的建議。</p>
<p>這裡我決定實作全版面兩欄式的版型，其中 #container 及 #content 的寬度會隨著瀏覽視窗大小作動態調整，而 #links 則是固定寬度且靠在視窗右邊，如下圖：</p>
<p><img alt="" src="http://www.jaceju.net/resources/blog/blog4.png" width="300" height="300" /></p>
<p>至於背景圖的部份，就請大家自行發揮天份製作囉。</p>
<h2>第三步 用 CSS 製作初步的畫面</h2>
<p>首先，我們要把 body 和 #container 設定好，如下：</p>
<pre><code>html, body {
  margin: 0;
}

#container {
  position: relative;
  width: 100%;
}</code></pre>
<p>首先我們將 html 和 body 的邊界設為 0 ，然後再把 #container 的寬度設為 100% 。 </p>
<p> (註：你可以在建構版型時，利用背景色來讓自己知道區塊跑到哪兒去了。)</p>
<p>接下來，我們指定 #banner 的高度：</p>
<pre><code>#banner {
  height: 80px;
}</code></pre>
<p>這裡我假設背景圖的高度是 80px ，當然你可以視需要自行更改。</p>
<p>然後我們利用浮動技巧，將 #content 放到左邊， #links 放到右邊。我們不指定 #content 的寬度，因為它會變動。我們僅需要固定住 #links 的寬度即可 (假設為 200px ) 。</p>
<pre><code>#content {
  float: left;
}

#links {
  float: right;
  width: 200px;
}</code></pre>
<p>咦？為什麼還是沒有效果？ #links 並沒有跑到 #content 的右邊？而是跑到 #content 的右下方去了：</p>
<p><img alt="" src="http://www.jaceju.net/resources/blog/blog5.png" width="300" height="300" /></p>
<p>這是因為現在 #content 的內容區寬度是 100% ，所以 #links 被 #content 擠了下來。解決的方式是把 #links 的 margin-left 指定為負值，讓它往左拉回 200px ：</p>
<pre><code>#links {
  float: right;
  width: 200px;
  margin-left: -200px;
}</code></pre>
<p>好啦，現在版面變成這樣：</p>
<p><img alt="" src="http://www.jaceju.net/resources/blog/blog6.png" width="300" height="220" /></p>
<p>呃...可是 #content 的內容和 #links 的內容疊在一起了，怎麼辦？很簡單，我們用 padding-right 把 #cotent 的內容往左擠進來：</p>
<pre><code>#content {
  float: left;
  padding-right: 200px;
}</code></pre>
<p>#footer 因為 #content 和 #links 浮動的關係，自動跑到上面來了。我們只要設定：</p>
<pre><code>#footer {
  clear: both;
  height: 40px;
}</code></pre>
<p> 雖然 IE 不用設定就會正常 (其實是不正常) ，但是為了其他瀏覽器，一定要設定。</p>
<p>好啦，現在實際上的完整版面會變成這樣了：</p>
<p><img alt="" src="http://www.jaceju.net/resources/blog/blog7.png" width="300" height="300" /></p>
<p>#content 的可視寬度其實是和 #container 的內容區寬度一樣為 100%，虛線部份才是 #content 的內容區。</p>
<p>有幾點要注意：</p>
<ol>
<li>#content 的內容寬度不可過長，不然會讓 #links 往下掉。</li>
<li>#footer 不一定會在 #content 下方出現，這要看 #content 和 #links 哪個元素較高而定。 </li>
<li>#banner 、 #content 、 #links 、 #footer 屬於結構元素，所以除非必要，否則它們的 margin 、 padding 都應該要設成 0px ( DIV 預設值) 。</li>
<li>如果要讓 #links 和 #content 左右對調，那麼就把 #content 和 #links 的 float 、 padding 和 margin 中之 left 改成 right ， right 改成 left 。 </li>
<li>配合這篇「<a href="http://blog.roodo.com/jaceju/archives/77741.html">如何正確實作出固定寬度且置中的版型</a>」，只要更動 body 和 #container 的樣式，你就可以讓這個版型置中囉。</li>
</ol>
<p>完整的 CSS 如下：</p>
<pre><code>html, body {
  margin: 0;
}

#container {
  position: relative;
  width: 100%;
}

#banner {
  height: 100px;
}

#content {
  float: left;
  padding-right: 200px;
}

#links {
  float: right;
  width: 200px;
  margin-left: -200px;
}

#footer {
  clear: both;
  height: 40px;
}</code></pre>
<h2>第四步 裝飾其他部份</h2>
<p>當然，上面的步驟只是把主要的版面結構定下來，裡面的彩妝還沒完成。礙於我的藝術涵養，就靠大家自行設計喜歡的樣式囉。不過還是有一些東西分享給大家。</p>
<p>前面我在這篇「<a href="http://blog.roodo.com/jaceju/archives/79138.html">拆開你的 CSS 吧！</a>」提到 CSS 維護的觀念，在我們把上面主要的結構定義好後，就可以利用外部的 CSS 檔來裝飾其他部份。例如我們可以建立一個 banner.css ，然後把 #banner 裡相關的 CSS 設定在這裡：</p>
<p>banner.css</p>
<pre><code>h1.blogtitle {
  display: block;
  font-size: 12pt;
  padding-top: 10px;
  padding-left: 20px;
  margin: 0;
}

h1 a {
  color: #669;
  text-decoration: none;
}</code></pre>
<p>然後在 site.css 裡把它給 import 進來，這樣一來只要更換不同的 site.css 或 banner.css ，就能夠隨心所欲地更換樣式或版型。</p>
<p>而細部的部份呢？像是 #content 裡的 .date 和 .blogbody ？一樣的方式，我們建立一個 content.css ，然後在裡面設定 .date 和 .blogbody 的樣式就可以了。</p>
<h2>第五步 CSS 放在哪裡？ </h2>
<p>在第四步時我們建立了一堆 CSS 檔，那麼應該放在哪裡才能讓網頁讀到它們呢？</p>
<p>其實 @import 指令可以接受外部的 url ，因此在你找到空間並上傳這些 CSS 檔案以後，可以在你的 site.css 上方寫這樣的指令：</p>
<p>@import url(http://xxx.xxx.xxx.xxx/xxxx.css); </p>
<p>這樣一來就能讓你的 site.css 引入外部 CSS 樣式了。</p>
<h2>補述 (IE 的 Bug) </h2>
<p>不知道大家有沒有發現，如果 #links 的內容長於 #content 的內容時，在 IE 上面預覽的話，會發現 #footer 竟然是貼在 #content 的下方，如下圖：</p>
<p><img alt="" src="http://www.jaceju.net/resources/blog/blog8.png" width="300" height="220" /></p>
<p>這是 IE 的 Bug ，說實在的，也令人非常討厭。這時上面的 CSS 我們就得做點修正，方法是讓 #content 和 #links 都<strong>向左浮動</strong>。當然，如果要反過來讓 #links 在 #content 的左方，那麼就把這兩者都<strong>向右浮動</strong>。這樣一來，在大多數的瀏覽器上都能夠正常顯示了。</p>
<h2>補述 (固定寬度置中的版型)</h2>
<p>在固定寬度置中的版型裡，我們要額外指定 #content 的寬度，例如：</p>
<pre><code>#content {
  float: left;
  padding-right: 200px;
  width: 560px; /* 760 - 200 = 560 */
}</code></pre>
<p>為什麼呢？因為我發現多數瀏覽器沒辦法很正確判斷出 #content 內容區應有的寬度，因此就得指定 #content 內容區的寬度。至於技術細節，就請知道的網友告知一下吧。</p>
<p>&nbsp;</p>
<h2>結語</h2>
<p>雖然這裡提供的 CSS 並不能真正用在實務上，但是它俱備了多數 CSS 排版的基礎觀念。因此大家只要了解這些原理以後，相信往後一定能創造更優秀的版型來</p>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/152005.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/152005.html</guid>
	<category>CSS</category>
	<pubDate>Fri, 27 May 2005 16:45:50 +0800</pubDate>
</item>
<item>
	<title>CSS 排版觀念：Float</title>
	<description><![CDATA[
	如果說浮動 (float) 是 CSS 排版的重要技巧之一，實在一點也不為過；很多著名的 CSS 版型都會用到浮動技巧。本文就來介紹浮動所需要注意的地方，以及可能會碰到的問題。
浮動是設定元素的 float 屬性，我們能設定向左 (left) 或向右 (right) 浮動。浮動基本上會使得元素在有足夠的空間時，往父元素的左邊或右邊靠緊。接著原本跟在這個元素後面的其他元素，就會自動往上跑 (不過這裡會有部份要考量的地方，稍後再談)。當元素被設定浮動時，會自動變成區塊顯示元素 (display: block) ，這時候我們就可以設定元素的 width 和 height 了。 
不過要注意一點：當我們把 position 設為 absolute 時，浮動會失效。
浮動會因為元素先後順序而有所影響，例如我們有 A 、 B 兩個區塊顯示元素如下圖，其中虛線部份的內部為父元素的內容區：

如果我們把 A 元素設為向右浮動，那麼 B 元素就會自動往上跑，如下圖：

而把 B 元素向右浮動的話， A 元素並不會受到干擾， B 元素也不會往父元素的上邊靠，如下圖：

那如果不往右浮動，而是向左浮動呢？那就非常複雜了。為什麼呢？因為各家瀏覽器的實作不同！如果我們試著把 A 元素向左浮動，就會發現 IE 會讓 B 元素跑到 A 元素的右邊；可是在 Firefox 和 Opera 上，雖然 A 元素會靠到父元素內容區的左邊，但是則會讓 B 的 Content 區被擠到 A 元素的下方 (詭異的是 B 元素的背景區卻靠向父元素內容區的上方)。所以在排版時，要特別注意這種情況。
如果我們不希望在緊跟在 A 元素及 B 元素後面的元素被浮動所影響，那麼就該對此元素設定 clear: both。 
另外元素的 Box Model 也會影響元素的浮動，我在 CSS 排版觀念：Box Model 裡提到了一些要點，這裡再說明一下。
 Box Model 正確的寬度，通常就是影響浮動是否能正常的關鍵。如下圖，是我們常見的置中兩欄式 float 排版。Sidebar 往左浮動，Content 則是往右浮動。

在浮動 Sidebar 時，如果沒有考慮好 Content 的 margin 和 padding，或是 Content 裡的內容過長無法折行時，Sidebar 的部份就會整個往下掉，如下圖。

因此在利用浮動製作版面時，一定也要記得和 Box Model 相互搭配，這樣才能夠製作正確而實用的版型。
總而言之，浮動技巧是 CSS 排版中非常重要的一門學問。下次我們就來正式挑戰一些常見的版型，不但告訴你怎麼做，還告訴你為什麼要這樣做。

	]]>
	</description>
	<content:encoded><![CDATA[
	<p>如果說浮動 (float) 是 CSS 排版的重要技巧之一，實在一點也不為過；很多著名的 CSS 版型都會用到浮動技巧。本文就來介紹浮動所需要注意的地方，以及可能會碰到的問題。</p>
<p>浮動是設定元素的 float 屬性，我們能設定向左 (left) 或向右 (right) 浮動。浮動基本上會使得元素在有足夠的空間時，往父元素的左邊或右邊靠緊。接著原本跟在這個元素後面的其他元素，就會自動往上跑 (不過這裡會有部份要考量的地方，稍後再談)。當元素被設定浮動時，會自動變成區塊顯示元素 (display: block) ，這時候我們就可以設定元素的 width 和 height 了。 </p>
<p>不過要注意一點：當我們把 position 設為 absolute 時，浮動會失效。</p>
<p>浮動會因為元素先後順序而有所影響，例如我們有 A 、 B 兩個區塊顯示元素如下圖，其中虛線部份的內部為父元素的內容區：</p>
<p><img alt="" src="http://www.jaceju.net/resources/css_float/float1.png" width="200" height="100" /></p>
<p>如果我們把 A 元素設為向右浮動，那麼 B 元素就會自動往上跑，如下圖：</p>
<p><img alt="" src="http://www.jaceju.net/resources/css_float/float2.png" width="200" height="100" /></p>
<p>而把 B 元素向右浮動的話， A 元素並不會受到干擾， B 元素也不會往父元素的上邊靠，如下圖：</p>
<p><img alt="" src="http://www.jaceju.net/resources/css_float/float3.png" width="200" height="100" /></p>
<p>那如果不往右浮動，而是向左浮動呢？那就非常複雜了。為什麼呢？因為各家瀏覽器的實作不同！如果我們試著把 A 元素向左浮動，就會發現 IE 會讓 B 元素跑到 A 元素的右邊；可是在 Firefox 和 Opera 上，雖然 A 元素會靠到父元素內容區的左邊，但是則會讓 B 的 Content 區被擠到 A 元素的下方 (詭異的是 B 元素的背景區卻靠向父元素內容區的上方)。所以在排版時，要特別注意這種情況。</p>
<p>如果我們不希望在緊跟在 A 元素及 B 元素後面的元素被浮動所影響，那麼就該對此元素設定 clear: both。 </p>
<p>另外元素的 Box Model 也會影響元素的浮動，我在 <a href="http://blog.roodo.com/jaceju/archives/100724.html">CSS 排版觀念：Box Model</a> 裡提到了一些要點，這裡再說明一下。</p>
<p> Box Model 正確的寬度，通常就是影響浮動是否能正常的關鍵。如下圖，是我們常見的置中兩欄式 float 排版。Sidebar 往左浮動，Content 則是往右浮動。</p>
<p><img alt="" src="http://www.jaceju.net/resources/css_float/float4.png" width="200" height="200" /></p>
<p>在浮動 Sidebar 時，如果沒有考慮好 Content 的 margin 和 padding，或是 Content 裡的內容過長無法折行時，Sidebar 的部份就會整個往下掉，如下圖。</p>
<p><img alt="" src="http://www.jaceju.net/resources/css_float/float5.png" width="200" height="260" /></p>
<p>因此在利用浮動製作版面時，一定也要記得和 Box Model 相互搭配，這樣才能夠製作正確而實用的版型。</p>
<p>總而言之，浮動技巧是 CSS 排版中非常重要的一門學問。下次我們就來正式挑戰一些常見的版型，不但告訴你怎麼做，還告訴你為什麼要這樣做。</p>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/126260.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/126260.html</guid>
	<category>CSS</category>
	<pubDate>Fri, 13 May 2005 22:33:58 +0800</pubDate>
</item>
<item>
	<title>CSS 排版觀念：Box Model</title>
	<description><![CDATA[
	CSS 排版有一個很重要的觀念： Box Model 。它描述了元素之間的彼鄰關係，同時也左右了我們是否能夠成功透過 CSS ，完成整個頁面的呈現。
Box Model 的意思是說，每一個元素我們都可視它為一個 Box 。一個 Box 由以下屬性組成：margin 、 padding 、 border 、 content 。一個 Box 的實際寬度 (高度) 是由  padding + border + width (height) 所組成，如下圖 (取自 MSDN)： 所以一般我們指定的 width 和 height 是 content 的寬和高，而沒有包含 border 和 padding 。換句話說，一個元素真正佔用的視覺空間，應該是 content + padding + border ，這是標準的 CSS 規範。 不過在 IE5/5.5 時代，一個元素的寬高則包含了 content + padding + border 。這個錯誤的實作，造成現今許多 CSS 排版上的困擾，但是也不是沒不是沒有辦法解決。Box Model Hack 提供了解決之道，重點在於利用 IE5/5.5 對 CSS 解讀上的 Bug ，讓我們所希望之元素正確的寬高能正確地在 IE5/5.5 顯示出來。對於 absolute 和 fixed 而言，錯誤的 Box Model 或許影響較小 (不過也絕對不是沒有影響，像是如果要正確控制圖層的寬度時)；但對 relative 和 static 來說，因為它們都還是會保留其所佔有的空間。因此如何正確地調整 content 的大小，就會影響到我們的排版。以下我們來看看 Box Model 的各個組成分子。
(請特別注意：我在以下圖示中，元素上色的部份，除了有特別說明外，都是包含 border + padding + content ，這點非常重要！因為除了 body 標籤外，元素的 background 屬性的作用都不會包含 margin。) borderborder 是一個「加上去」的屬性，換句話說，一般都是用來區隔元素與元素用的。 border 的外圍即為元素的最外圍，因此計算元素實際的寬高時，就一定要將 border 納入。換句話說， border會佔有空間，所以在計算精細的版面時，一定要將 border 的影響考慮進去。如下圖，黑色虛線部份即為 border ： 還有一點要特別注意，如果我們在元素上設定背景色時， IE 是作用在 padding + content ，而 Firefox 則是作用在 border + padding + content 上。 paddingpadding 會在元素內容的周圍加上我們所指定大小的空間；而如果我們沒有指定元素的寬高時，那麼該元素的內容就會受到 padding 所擠壓。如下圖： 如果元素的內容中有行內顯示元素時，我們可以利用 padding 的設定來讓它們在我們想要的地方折行，而不用對 content 指定寬度；這樣的技巧我用在全版面的兩欄式版面上，使得我不用對難用的 width 屬性傷腦筋。其實 padding 就這麼簡單，不過可別小看它，在 CSS 排版裡， padding 加上 margin 的設定，就能夠使版面千變萬化。margin
margin 的意義就是該元素與其他元素間的邊界距離，它的應用大概也算是 CSS 排版很重要的技術之一。所以我打算多花一點時間解釋它。我們可以分以下兩種狀況解釋：「元素與相鄰元素的距離」及「元素與父元素間的距離」。「元素與相鄰元素的距離」指得是元素間是緊鄰的 (不論是區塊顯示元素或行內顯示元素) ，而沒有階層關係。例如： &lt;span id=&quot;i1&gt;行內顯示元素1&lt;/span&gt;&lt;span id=&quot;i2&quot;&gt;行內顯示元素2&lt;/span&gt; 這兩個 span 元素就是緊鄰關係。而 &lt;span&gt; 屬於行內顯示元素(display: inline) ，因此它們的邊界距離就是 i1 的 margin-right 加上 i2 的 margin-left ，如下圖。 另一種緊鄰關係是區塊顯示元素，例如：&lt;div id=&quot;b1&quot;&gt;區塊顯示元素1&lt;/div&gt;&lt;div id=&quot;b2&quot;&gt;區塊顯示元素2&lt;/div&gt;&lt;div&gt; 屬於區塊顯示元素，也就是在它的前後會加入換行的控制。要注意的是，區塊顯示元素它們的邊界距離是重疊的！而當 b1 的 margin-bottom 大於 b2 的 margin-top 時， b1 和 b2 實際的距離就以 b1 的 margin-bottom 為準，如下圖。
還有一種緊鄰關係是浮動元素，基本上它會是個區塊顯示元素，但 margin 的呈現關係和行內顯示元素是很像的，這我會在介紹浮動元素時再加以說明。「元素與父元素間的距離」就是指元素之間有階層關係時的邊界距離。例如：
&lt;div id=&quot;b3&quot;&gt;
  &lt;div id=&quot;b4&quot;&gt;內部區塊&lt;/div&gt;
&lt;/div&gt;
其中 b3 就是父元素， b4 則是子元素。 它們的邊界關係如下圖：我們可以看到，子元素的邊界起始會以父元素的 Content 區為基準。 上面我們都是將 margin 設為正值，例如將元素的 margin-top 設為 20px ，那麼元素上面就會多出 20px 的空間。注意，我是說多出空間，而非向下移動！有什麼差別呢？向下移動的定義是我們讓元素成為區塊顯示(display: block)或是它原本就是區塊顯示元素，然後指定它的 position 為 relative ，最後設定它的 top 為正值。而多出空間則不論它的 position 設定為何，硬是擠進我們指定的空間。而且設定 margin 之後，頁面內容超過螢幕顯示範圍，即時有捲軸也無法呈現完整的內容。不過 IE6 和 FireFox 兩者對 Box Model 在 margin 的實作又有點不太一樣。IE6 就算指定了父元素的 height ，如果子元素的高度超過父元素的 height ，父元素就會被撐大，然後保留子元素 margin-bottom 的空間；而 FireFox 就不會。哪個實作是對的，我也不太清楚。margin 也可以指定為負值，例如我在這篇「如何正確實作出固定寬度且置中的版型？」裡，運用到了將 margin-left 設定為負值的技巧。這裡我再加以說明，將 margin 設定為負值是怎麼一回事。在「元素與元素間緊鄰」時，我們將 margin 設定為負值，會使得 margin 設定為負值的元素「疊」到另一個元素上 (不過還是要視另一個元素所設定的邊界距離而定) 。例如，我們將 A 區塊的 margin-bottom 設為 0 ， B 區塊的 margin-top 設為 -10px ，那麼 B 區塊的文字就會疊到 A 區塊的文字上。
「元素間有階層性關係」時的關係，如果子元素的所指定的 margin 負值的絕對值大於父元素的 border + padding 時，就會使得子元素跑到父元素的外部去了。如圖，我們指定藍色元素的 margin-left 為 -100px ，那麼該元素就會往左跑 100px ；這時如果其父元素 (淺黃色) 的 border-left 和 padding-left 相加小於 100px ，我們就會看到該元素就會突出於父元素的左邊。總而言之，將 margin 指定為負值在 CSS 排版上有非常大的用處，如果能將它了然於胸，相信你在 CSS 排版的功力一定會大增的。這篇我僅描述了 CSS Box Model 的一些基本觀念，雖然不是非常深入，但希望能夠讓大家對它們有基本的認知。而 CSS 排版除了 Position 和 Box Model 外，還有一樣非常值得探討的技術，就是浮動 (float) ；我將會在下次的文章中談到它。

	]]>
	</description>
	<content:encoded><![CDATA[
	<p>CSS 排版有一個很重要的觀念： Box Model 。它描述了元素之間的彼鄰關係，同時也左右了我們是否能夠成功透過 CSS ，完成整個頁面的呈現。</p>
<p>Box Model 的意思是說，每一個元素我們都可視它為一個 Box 。一個 Box 由以下屬性組成：margin 、 padding 、 border 、 content 。一個 Box 的實際寬度 (高度) 是由  padding + border + width (height) 所組成，如下圖 (取自 <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnie60/html/cssenhancements.asp">MSDN</a>)： </p><p><img alt="IE Box Model" src="http://www.jaceju.net/resources/css_boxmodel/boxdim.gif" /></p><p>所以一般我們指定的 width 和 height 是 content 的寬和高，而沒有包含 border 和 padding 。換句話說，一個元素真正佔用的視覺空間，應該是 content + padding + border ，這是標準的 CSS 規範。</p><p> 不過在 IE5/5.5 時代，一個元素的寬高則包含了 content + padding + border 。這個錯誤的實作，造成現今許多 CSS 排版上的困擾，但是也不是沒不是沒有辦法解決。<a href="http://tantek.com/CSS/Examples/boxmodelhack.html">Box Model Hack</a> 提供了解決之道，重點在於利用 IE5/5.5 對 CSS 解讀上的 Bug ，讓我們所希望之元素正確的寬高能正確地在 IE5/5.5 顯示出來。</p><p>對於 absolute 和 fixed 而言，錯誤的 Box Model 或許影響較小 (不過也絕對不是沒有影響，像是如果要正確控制圖層的寬度時)；但對 relative 和 static 來說，因為它們都還是會保留其所佔有的空間。因此如何正確地調整 content 的大小，就會影響到我們的排版。</p><p>以下我們來看看 Box Model 的各個組成分子。</p>
<p>(請特別注意：我在以下圖示中，元素上色的部份，除了有特別說明外，都是包含 border + padding + content ，這點非常重要！因為除了 body 標籤外，元素的 background 屬性的作用都不會包含 margin。) </p><h2>border</h2><p>border 是一個「加上去」的屬性，換句話說，一般都是用來區隔元素與元素用的。 border 的外圍即為元素的最外圍，因此計算元素實際的寬高時，就一定要將 border 納入。換句話說， border會佔有空間，所以在計算精細的版面時，一定要將 border 的影響考慮進去。</p><p>如下圖，黑色虛線部份即為 border ：</p><p><img alt="border" src="http://www.jaceju.net/resources/css_boxmodel/border1.png" width="200" height="150" /> </p><p>還有一點要特別注意，如果我們在元素上設定背景色時， IE 是作用在 padding + content ，而 Firefox 則是作用在 border + padding + content 上。 </p><h2>padding</h2><p>padding 會在元素內容的周圍加上我們所指定大小的空間；而如果我們沒有指定元素的寬高時，那麼該元素的內容就會受到 padding 所擠壓。如下圖： </p><p><img alt="padding" src="http://www.jaceju.net/resources/css_boxmodel/padding1.png" width="200" height="150" /></p><p>如果元素的內容中有行內顯示元素時，我們可以利用 padding 的設定來讓它們在我們想要的地方折行，而不用對 content 指定寬度；這樣的技巧我用在全版面的兩欄式版面上，使得我不用對難用的 width 屬性傷腦筋。</p><p>其實 padding 就這麼簡單，不過可別小看它，在 CSS 排版裡， padding 加上 margin 的設定，就能夠使版面千變萬化。</p><h2>margin</h2>
<p>margin 的意義就是該元素與其他元素間的邊界距離，它的應用大概也算是 CSS 排版很重要的技術之一。所以我打算多花一點時間解釋它。</p><p>我們可以分以下兩種狀況解釋：「元素與相鄰元素的距離」及「元素與父元素間的距離」。</p><p>「元素與相鄰元素的距離」指得是元素間是緊鄰的 (不論是區塊顯示元素或行內顯示元素) ，而沒有階層關係。例如：</p><pre><code> &lt;span id=&quot;i1&gt;行內顯示元素1&lt;/span&gt;&lt;span id=&quot;i2&quot;&gt;行內顯示元素2&lt;/span&gt; </code></pre><p>這兩個 span 元素就是緊鄰關係。而 &lt;span&gt; 屬於行內顯示元素(display: inline) ，因此它們的邊界距離就是 i1 的 margin-right 加上 i2 的 margin-left ，如下圖。 </p><p><img alt="行內 margin" src="http://www.jaceju.net/resources/css_boxmodel/margin1.png" width="300" height="100" /></p><p>另一種緊鄰關係是區塊顯示元素，例如：</p><pre><code>&lt;div id=&quot;b1&quot;&gt;區塊顯示元素1&lt;/div&gt;&lt;div id=&quot;b2&quot;&gt;區塊顯示元素2&lt;/div&gt;</code></pre><p>&lt;div&gt; 屬於區塊顯示元素，也就是在它的前後會加入換行的控制。要注意的是，區塊顯示元素它們的邊界距離是重疊的！而當 b1 的 margin-bottom 大於 b2 的 margin-top 時， b1 和 b2 實際的距離就以 b1 的 margin-bottom 為準，如下圖。</p><p><img alt="區塊 margin" src="http://www.jaceju.net/resources/css_boxmodel/margin2.png" width="300" height="200" /></p>
<p>還有一種緊鄰關係是浮動元素，基本上它會是個區塊顯示元素，但 margin 的呈現關係和行內顯示元素是很像的，這我會在介紹浮動元素時再加以說明。</p><p>「元素與父元素間的距離」就是指元素之間有階層關係時的邊界距離。例如：</p>
<pre><code>&lt;div id=&quot;b3&quot;&gt;
  &lt;div id=&quot;b4&quot;&gt;內部區塊&lt;/div&gt;
&lt;/div&gt;</code></pre>
<p>其中 b3 就是父元素， b4 則是子元素。 它們的邊界關係如下圖：</p><p><img alt="父子元素 margin" src="http://www.jaceju.net/resources/css_boxmodel/margin3.png" width="400" height="400" /></p><p>我們可以看到，子元素的邊界起始會以父元素的 Content 區為基準。</p><p> 上面我們都是將 margin 設為正值，例如將元素的 margin-top 設為 20px ，那麼元素上面就會多出 20px 的空間。注意，我是說多出空間，而非向下移動！有什麼差別呢？</p><p>向下移動的定義是我們讓元素成為區塊顯示(display: block)或是它原本就是區塊顯示元素，然後指定它的 position 為 relative ，最後設定它的 top 為正值。</p><p>而多出空間則不論它的 position 設定為何，硬是擠進我們指定的空間。而且設定 margin 之後，頁面內容超過螢幕顯示範圍，即時有捲軸也無法呈現完整的內容。</p><p>不過 IE6 和 FireFox 兩者對 Box Model 在 margin 的實作又有點不太一樣。IE6 就算指定了父元素的 height ，如果子元素的高度超過父元素的 height ，父元素就會被撐大，然後保留子元素 margin-bottom 的空間；而 FireFox 就不會。哪個實作是對的，我也不太清楚。</p><p>margin 也可以指定為負值，例如我在這篇「<a href="http://blog.roodo.com/jaceju/archives/77741.html">如何正確實作出固定寬度且置中的版型？</a>」裡，運用到了將 margin-left 設定為負值的技巧。這裡我再加以說明，將 margin 設定為負值是怎麼一回事。</p><p>在「元素與元素間緊鄰」時，我們將 margin 設定為負值，會使得 margin 設定為負值的元素「疊」到另一個元素上 (不過還是要視另一個元素所設定的邊界距離而定) 。例如，我們將 A 區塊的 margin-bottom 設為 0 ， B 區塊的 margin-top 設為 -10px ，那麼 B 區塊的文字就會疊到 A 區塊的文字上。</p>
<p>「元素間有階層性關係」時的關係，如果子元素的所指定的 margin 負值的絕對值大於父元素的 border + padding 時，就會使得子元素跑到父元素的外部去了。如圖，我們指定藍色元素的 margin-left 為 -100px ，那麼該元素就會往左跑 100px ；這時如果其父元素 (淺黃色) 的 border-left 和 padding-left 相加小於 100px ，我們就會看到該元素就會突出於父元素的左邊。</p><p><img alt="negative margin" src="http://www.jaceju.net/resources/css_boxmodel/margin4.png" width="200" height="180" /></p><p>總而言之，將 margin 指定為負值在 CSS 排版上有非常大的用處，如果能將它了然於胸，相信你在 CSS 排版的功力一定會大增的。</p><p>這篇我僅描述了 CSS Box Model 的一些基本觀念，雖然不是非常深入，但希望能夠讓大家對它們有基本的認知。而 CSS 排版除了 <a href="http://blog.roodo.com/jaceju/archives/91923.html">Position</a> 和 Box Model 外，還有一樣非常值得探討的技術，就是浮動 (float) ；我將會在下次的文章中談到它。</p>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/100724.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/100724.html</guid>
	<category>CSS</category>
	<pubDate>Mon, 09 May 2005 23:16:31 +0800</pubDate>
</item>
<item>
	<title>CSS 排版觀念：Position</title>
	<description><![CDATA[
	 很多人都會用圖層來製作網頁，或許常會聽到所謂的絕對位置和相對位置。其實它們都是 CSS 中 position 的設定值，透過設定 position ，便能讓我們隨意移動元素的位置。
不過它們之間到底有什麼不同呢？本文做個簡單的說明。
參數說明首先我把其中的關係整理成表：CSS 排版觀念 position 參數說明position 參數 / 參數說明absoluterelativestatic(預設值)fixed中文意義 絕對位置 相對位置 靜態位置 固定位置畫面位置參考基準 父元素內容區邊界 原本應該在的位置 不變 不指定：原本應該在的位置 指定：螢幕視窗最大可視範圍邊界 (或框架邊界) 移動參考基準 文件 文件 文件 螢幕視窗最大可視範圍可改變顯示位置 是 是 否 是可調整大小 是 display 為 block ：是 display 為 inline ：否  display 為 block ：是 display 為 inline ：否 是從顯示流程中去除 是 否 否 是當我們對元素的 position 屬性，指定了 absolute、 relative 或 fixed 後，這個元素就可以移動了。我們可以用 top, left, right, bottom 這四種屬性來指定元素要呈現的位置。
由於 IE 不支援 position: fixed ，使得固定位置這個好用的技巧一直不受大家的重視。但在這裡我還是提一下。你可以使用 FireFox 來感受一下固定位置的強大威力，或是等待新版的 IE 支援。接下來我們來解釋上面的表列裡，每個參數說明的意義。畫面位置參考基準以絕對位置 (position: absolute) 而言，故名思義，它是以父元素的邊界為絕對起點。例如如果我們設定 top: 50px ，那麼這個元素就會在距離父元素內容區上邊界 50px 的地方呈現，如下圖：補充：如果父元素的 position 不是 absolute 或 relative 時，那麼元素的位置就會再對應到父元素的上層元素；如果其親代元素的 position 都沒有設定 absolute 或 relative 時，就以螢幕視窗最大可視範圍邊界為基準。而以相關位置 (position: relative) 而言，其意義就是相對於原本的位置。例如我們指定 top: 50px 時，那麼這個元素就會從原本應該呈現的位置往下移動 50px 。如下圖，紅色虛線部份就是未設定 position: relative 前，元素原該應該在的位置： 
而固定位置 (position: fixed) 指的就是固定在螢幕視窗最大可視範圍上，如果不指定位置 (top, left, right, bottom) 時，那元素就會固定在原本的位置；而指定位置後，就會以螢幕視窗最大可視範圍的邊界為絕對基準點。如果頁面內容超過螢幕視窗最大可視範圍大小時，那麼不論我們如何捲動頁面，元素都會固定在螢幕視窗最大可視範圍上我們所指定的位置。移動參考基準當頁面可以捲動的時候，absolute 、 relative 、 static 都會跟著移動。只有 fixed 會固定在螢幕視窗最大可視範圍上，不會跟著移動。可改變顯示位置就是我們可以透過指定元素的 top, left, right, bottom 四個屬性，使元素改變顯示位置。如果元素是 position: static 時，會自動忽略所設定的 top, left, right, bottom 。可調整大小我們可以透過 width, height 來調整元素內容區的大小，不過當 position 是 relative 或是 static 時，元素的 display 屬性必須為 block 才可調整其大小。從顯示流程中去除 顯示流程的意義就是頁面上的每一個元素的呈現，換句話說，就是該元素會出現的位置，及其佔用的空間等等。我們可以將原來的頁面想成是一個圖層，每個元素都是一個一個緊接在前一個元素後面。如下圖，在尚未指定 position 時，粉紫色區塊會緊接在淺藍色區塊後。請注意，我在這裡提到的圖層，指的是瀏覽器去解譯 HTML 後，將元素呈現出來的圖層，而非一般我們所認為，以絕對位置呈現的圖層；你可以把它想像成是 Photoshop 裡的圖層。
當我們指定淺藍色區塊的 position 屬性為 absolute 或 fixed 後，淺藍色區塊就會跑到另一個圖層；而粉紫色區塊因為淺藍色區塊已經從原圖層的顯示流程中去除了，所以它就自動往上跑。如下圖，紅色虛線就是粉紫色區塊原本的位置。而元素如果指定為 relative 時，雖然也能移動，但原本的頁面圖層還是會保留該元素所佔有的空間。後記或許你在看完這篇文章之後，還是無法很清楚地了解 position 屬性的運作方式。建議你打開你的瀏覽器 (最好是用 FireFox)，再用你慣用的 HTML 編輯器去試試它們之間的差異。然後回來看看這篇文章，你也許就能明白我的意思。補充：如果頁面在框架裡時 (frame 或 iframe) ，所有參照螢幕視窗最大可視範圍邊界的元素就會改為參照框架邊界。範例以下這個範例，你可以看到設定 position 前及設定 position 後的關係：

	]]>
	</description>
	<content:encoded><![CDATA[
	<p> 很多人都會用圖層來製作網頁，或許常會聽到所謂的絕對位置和相對位置。其實它們都是 CSS 中 position 的設定值，透過設定 position ，便能讓我們隨意移動元素的位置。</p>
<p>不過它們之間到底有什麼不同呢？本文做個簡單的說明。</p>
<h2>參數說明</h2><p>首先我把其中的關係整理成表：</p><table border="1" class="info-table" summary="CSS 排版觀念 position 參數說明"><caption>CSS 排版觀念 position 參數說明</caption><tr><th>position 參數<br /> / 參數說明</th><th>absolute</th><th>relative</th><th>static(預設值)</th><th>fixed</th></tr><tr><th>中文意義</th> <td>絕對位置</td> <td>相對位置</td> <td>靜態位置</td> <td>固定位置</td></tr><tr class="alt"><th>畫面位置參考基準</th> <td>父元素內容區邊界</td> <td>原本應該在的位置</td> <td>不變</td> <td>不指定：原本應該在的位置<br /> 指定：<del>螢幕</del>視窗最大可視範圍邊界 (或框架邊界) </td></tr><tr><th>移動參考基準</th> <td>文件</td> <td>文件</td> <td>文件</td> <td><del>螢幕</del>視窗最大可視範圍</td></tr><tr class="alt"><th>可改變顯示位置</th> <td>是</td> <td>是</td> <td>否</td> <td>是</td></tr><tr><th>可調整大小</th> <td>是</td> <td>display 為 block ：是<br /> display 為 inline ：否 </td> <td>display 為 block ：是<br /> display 為 inline ：否</td> <td>是</td></tr><tr class="alt"><th>從顯示流程中去除</th> <td>是</td> <td>否</td> <td>否</td> <td>是</td></tr></table><p>當我們對元素的 position 屬性，指定了 absolute、 relative 或 fixed 後，這個元素就可以移動了。我們可以用 top, left, right, bottom 這四種屬性來指定元素要呈現的位置。</p>
<p>由於 IE 不支援 position: fixed ，使得固定位置這個好用的技巧一直不受大家的重視。但在這裡我還是提一下。你可以使用 FireFox 來感受一下固定位置的強大威力，或是等待新版的 IE 支援。</p><p>接下來我們來解釋上面的表列裡，每個參數說明的意義。</p><h2>畫面位置參考基準</h2><p>以絕對位置 (position: absolute) 而言，故名思義，它是以父元素的邊界為絕對起點。例如如果我們設定 top: 50px ，那麼這個元素就會在距離父元素內容區上邊界 50px 的地方呈現，如下圖：</p><p><img alt="position: absolute" src="http://www.jaceju.net/resources/css_position/absolute_1.png" width="200" height="200" /></p><p><strong>補充：</strong>如果父元素的 position 不是 absolute 或 relative 時，那麼元素的位置就會再對應到父元素的上層元素；如果其親代元素的 position 都沒有設定 absolute 或 relative 時，就以<del>螢幕</del>視窗最大可視範圍邊界為基準。</p><p>而以相關位置 (position: relative) 而言，其意義就是相對於原本的位置。例如我們指定 top: 50px 時，那麼這個元素就會從原本應該呈現的位置往下移動 50px 。如下圖，紅色虛線部份就是未設定 position: relative 前，元素原該應該在的位置：</p><p><img alt="position: relative" src="http://www.jaceju.net/resources/css_position/relative_1.png" width="200" height="200" /> </p>
<p>而固定位置 (position: fixed) 指的就是固定在<del>螢幕</del>視窗最大可視範圍上，如果不指定位置 (top, left, right, bottom) 時，那元素就會固定在原本的位置；而指定位置後，就會以<del>螢幕</del>視窗最大可視範圍的邊界為絕對基準點。如果頁面內容超過<del>螢幕</del>視窗最大可視範圍大小時，那麼不論我們如何捲動頁面，元素都會固定在<del>螢幕</del>視窗最大可視範圍上我們所指定的位置。</p><h2>移動參考基準</h2><p>當頁面可以捲動的時候，absolute 、 relative 、 static 都會跟著移動。只有 fixed 會固定在<del>螢幕</del>視窗最大可視範圍上，不會跟著移動。</p><h2>可改變顯示位置</h2><p>就是我們可以透過指定元素的 top, left, right, bottom 四個屬性，使元素改變顯示位置。如果元素是 position: static 時，會自動忽略所設定的 top, left, right, bottom 。</p><h2>可調整大小</h2><p>我們可以透過 width, height 來調整元素內容區的大小，不過當 position 是 relative 或是 static 時，元素的 display 屬性必須為 block 才可調整其大小。</p><h2>從顯示流程中去除 </h2><p>顯示流程的意義就是頁面上的每一個元素的呈現，換句話說，就是該元素會出現的位置，及其佔用的空間等等。</p><p>我們可以將原來的頁面想成是一個圖層，每個元素都是一個一個緊接在前一個元素後面。如下圖，在尚未指定 position 時，粉紫色區塊會緊接在淺藍色區塊後。</p><p><img alt="從顯示流程中去除_1" src="http://www.jaceju.net/resources/css_position/layer1.png" width="300" height="300" /></p><p>請注意，我在這裡提到的圖層，指的是瀏覽器去解譯 HTML 後，將元素呈現出來的圖層，而非一般我們所認為，以絕對位置呈現的圖層；你可以把它想像成是 Photoshop 裡的圖層。</p>
<p>當我們指定淺藍色區塊的 position 屬性為 absolute 或 fixed 後，淺藍色區塊就會跑到另一個圖層；而粉紫色區塊因為淺藍色區塊已經從原圖層的顯示流程中去除了，所以它就自動往上跑。如下圖，紅色虛線就是粉紫色區塊原本的位置。</p><p><img alt="從顯示流程中去除_2" src="http://www.jaceju.net/resources/css_position/layer2.png" width="300" height="300" /></p><p>而元素如果指定為 relative 時，雖然也能移動，但原本的頁面圖層還是會保留該元素所佔有的空間。</p><h2>後記</h2><p>或許你在看完這篇文章之後，還是無法很清楚地了解 position 屬性的運作方式。建議你打開你的瀏覽器 (最好是用 FireFox)，再用你慣用的 HTML 編輯器去試試它們之間的差異。然後回來看看這篇文章，你也許就能明白我的意思。</p><p><strong>補充：</strong>如果頁面在框架裡時 (frame 或 iframe) ，所有參照<del>螢幕</del>視窗最大可視範圍邊界的元素就會改為參照框架邊界。</p><h2>範例</h2><p>以下這個範例，你可以看到設定 position 前及設定 position 後的關係：</p><iframe width="80%" height="300" src="http://www.jaceju.net/resources/css_position/position_test.htm"></iframe>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/91923.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/91923.html</guid>
	<category>CSS</category>
	<pubDate>Fri, 29 Apr 2005 12:31:00 +0800</pubDate>
</item>
<item>
	<title>CSS 的 ID 和 CLASS 有什麼不同？</title>
	<description><![CDATA[
	class 指的是「同一類型的元素」，像是 Blog 首頁每篇文章，其內容樣式都要一樣，所以我們就可以指定 class="blogbody" 來表示這些內容是同類型的。
id 則是元素唯一的名稱，就像每個人的身份證號碼一樣不能有重覆 (雖然大多數瀏覽器允許) ，這樣我們才能透過標準的 JavaScript (ECMAScript) 及 DOM 來取得這個元素。例如：&lt;div id=&quot;container&quot;&gt; ，意思就是整個頁面裡只會有一個名為 container 的主要 div 容器。
而 class 和 id 的命名儘可能反應這些元素所代表的意義，而非以它們會呈現的樣式來命名。例如說 class=&quot;blogbody&quot; 比 class=&quot;bgBlue&quot; 來得好，因為我們可能會更換樣式。如果以樣式呈現的方式命名，那麼一旦更換樣式，且呈現方式變化過大的話，這樣的名稱就相當難以維護了。

	]]>
	</description>
	<content:encoded><![CDATA[
	<p>class 指的是「同一類型的元素」，像是 Blog 首頁每篇文章，其內容樣式都要一樣，所以我們就可以指定 class="blogbody" 來表示這些內容是同類型的。</p>
<p>id 則是元素唯一的名稱，就像每個人的身份證號碼一樣不能有重覆 (雖然大多數瀏覽器允許) ，這樣我們才能透過標準的 JavaScript (ECMAScript) 及 DOM 來取得這個元素。例如：&lt;div id=&quot;container&quot;&gt; ，意思就是整個頁面裡只會有一個名為 container 的主要 div 容器。</p>
<p>而 class 和 id 的命名儘可能反應這些元素所代表的意義，而非以它們會呈現的樣式來命名。例如說 class=&quot;blogbody&quot; 比 class=&quot;bgBlue&quot; 來得好，因為我們可能會更換樣式。如果以樣式呈現的方式命名，那麼一旦更換樣式，且呈現方式變化過大的話，這樣的名稱就相當難以維護了。</p>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/95228.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/95228.html</guid>
	<category>CSS</category>
	<pubDate>Tue, 26 Apr 2005 23:58:01 +0800</pubDate>
</item>
<item>
	<title>拆開你的 CSS 吧！</title>
	<description><![CDATA[
	「CSS 設定一多，就很難找到自己要改的。」
你也有同感嗎？教你一個好方法，適用於目前主流的瀏覽器上，像是 IE 及 FireFox。
CSS 只能寫在一個檔案裡嗎？非也。在 CSS 裡有個好用的指令：@import ，可以讓我們引入外部 CSS 檔案。
你只要在主要的 CSS 檔案的最上方這樣寫：
@import url(外部 CSS 檔案路徑);
就可以了。不過一定要注意，@import 指令一定要寫在 body 標籤的 CSS 設定之前。
然後我們應該如何正確地拆開 CSS 呢？雖然 CSS 沒有強制性地規定我們如何拆解 CSS ，不過我倒是可以提供一些建議。

主要的檔案只放置編排版面的 CSS ，而字型、背景等等的設定儘可能地放到其他檔案裡。
每個主要區塊的 CSS 都將它存成一個檔案，而檔案裡面就可以放這些區塊的細部設定。
檔案的命名請用英文字母、數字及底線組成，且儘可能地能夠望而生義。
如果有多種版型，則可再利用 (Reuse) 的部份可以獨立成一個檔案。
 不同的媒體 (例如供印表用的 CSS 、螢幕顯示用的 CSS ) ，都應該建立一個檔案，以便管理。

完整範例如下：
@import url(banner.css);
@import url(content.css);
@import url(links.css);
@import url(common.css);
/* 其他的 CSS 檔 */

html, body {
/* ... */
}

/* 其他的設定 */

是的，馬上就去試試看吧。

	]]>
	</description>
	<content:encoded><![CDATA[
	<p>「CSS 設定一多，就很難找到自己要改的。」</p>
<p>你也有同感嗎？教你一個好方法，適用於目前主流的瀏覽器上，像是 IE 及 FireFox。</p>
<p>CSS 只能寫在一個檔案裡嗎？非也。在 CSS 裡有個好用的指令：@import ，可以讓我們引入外部 CSS 檔案。</p>
<p>你只要在主要的 CSS 檔案的最上方這樣寫：</p>
<pre><code>@import url(外部 CSS 檔案路徑);</code></pre>
<p>就可以了。<strong>不過一定要注意，@import 指令一定要寫在 body 標籤的 CSS 設定之前。</strong></p>
<p>然後我們應該如何正確地拆開 CSS 呢？雖然 CSS 沒有強制性地規定我們如何拆解 CSS ，不過我倒是可以提供一些建議。</p>
<ol>
<li>主要的檔案只放置編排版面的 CSS ，而字型、背景等等的設定儘可能地放到其他檔案裡。</li>
<li>每個主要區塊的 CSS 都將它存成一個檔案，而檔案裡面就可以放這些區塊的細部設定。</li>
<li>檔案的命名請用英文字母、數字及底線組成，且儘可能地能夠望而生義。</li>
<li>如果有多種版型，則可再利用 (Reuse) 的部份可以獨立成一個檔案。</li>
<li> 不同的媒體 (例如供印表用的 CSS 、螢幕顯示用的 CSS ) ，都應該建立一個檔案，以便管理。</li>
</ol>
<p>完整範例如下：</p>
<pre><code>@import url(banner.css);
@import url(content.css);
@import url(links.css);
@import url(common.css);
/* 其他的 CSS 檔 */

html, body {
/* ... */
}

/* 其他的設定 */
</code></pre>
<p>是的，馬上就去試試看吧。</p>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/79138.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/79138.html</guid>
	<category>CSS</category>
	<pubDate>Sun, 17 Apr 2005 11:17:16 +0800</pubDate>
</item>
<item>
	<title>如何正確實作出固定寬度且置中的版型</title>
	<description><![CDATA[
	以往，網頁開發者都會碰到這樣的問題：有時候他們會在網頁上擺放一些圖層 (像是滑鼠移過去就會出現的下拉式選單) ，但這些圖層的位置都是絕對的 ( position: absolute ) 。因此只要他們把整個版面置中後，就會發現圖層沒有跟著跑，所以這些網頁開發者僅能選擇把整個版型往左靠。但是為了符合一般瀏覽者的螢幕寬度(800 x 600)，就必須把版面的寬度固定 (例如 760px) ，所以當螢幕可以顯示的範圍較大時 (1024 x 768) ，你就會看到右邊有一大塊空白的區域了。
傳統的作法，都是用表格排版來解決這種問題。但是表格畢竟不是用來排版的，而且一但使用表格排版，頁面的版型就定死了，毫無靈活度可言；因此我將把表格排版這項解決方案丟到垃圾筒，改以 CSS 作為我排版的利器。
調整 HTML
如何用 CSS 正確實作出固定寬度且置中的版型呢？我們有兩種方式可以達到這樣的目的。不過在此之前，我們必須先將所有的網頁內容用一個 &lt;div&gt; 標籤包起來，就像下面這樣：
&lt;html&gt;
&lt;head&gt;[略]&lt;/head&gt;
&lt;body&gt;
&lt;div id="container"&gt;
[網頁內容]
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
我們指定這個 &lt;div&gt; 標籤的 id 屬性為 container ， id 屬性在整個頁面裡必須是唯一的。雖然大部份瀏覽器不限制頁面裡的標籤可以擁有重覆的 id 屬性，但我不建議這麼做，因為透過 JavaScript (ECMA Script)  的 document.getElementById 抓取標籤元素時，重覆的 id 屬性會造成混亂。
第一種方法
第一種方式純粹使用 CSS 屬性來控制版面置中，請看下面的 CSS ：
html, body {
  margin: 0;
  text-align: center;
}
#container {
  position: relative;
  margin: 0 auto;
  width: 760px;
  text-align: left;
}
我們一行一行解釋：
html, body - 這行表示我們對 &lt;html&gt; 及 &lt;body&gt; 標籤做樣式設定。大部份瀏覽器的頁面內容都是以 &lt;body&gt; 為基準，但某些瀏覽器則是以 &lt;html&gt; 為基準，所以我兩個都指定。
margin: 0; - 一般我們都會在 &lt;body&gt; 加上 topmargin="0" 及 leftmargin="0" ，使得頁面內容和瀏覽器邊緣間沒有空隙。但是 topmargin 和 leftmargin 屬性都已被 W3C 廢棄了，所以我改用 CSS 的 margin 屬性來指定。 
text-align: center; - 重點之一，有些瀏覽器無法很正確地使版型置中，透過這個屬性，我們可以使 &lt;body&gt; 內的所有內容置中。注意，我說的是所有內容，包含所有的標籤、文字、圖片等，所以等會我們必須把它調整回來。
#container - 這行表示我們將會一個 id 屬性值為 container 的標籤做設定。也可以這樣寫： div#container ，如此就很明確地指定是一個 id 屬性值為 container 的 &lt;div&gt; 標籤。
position: relative; - 將元素指定為相對定位。其實這行有沒有並無太大關係，但為了相容性，我還是指定了這個屬性。絕對定位和相對定位的差別我以後有空再說明。
margin: 0 auto; - 重點之二，這會使得 div#container 這個元素與 &lt;bod&gt; 標籤的上下邊界空間設為 0 ，而左右兩邊則自動調整。完整的寫法是 margin: 0 auto 0 auto; ，不過如果有重覆的設定時， CSS 可以讓我們只寫一次，因此 0 auto 0 auto 就可以等於 0 auto 。
width: 760px; - 這就是我們所要指定的版面寬度囉。
text-align: left; - 重點之三，因為我們在 &lt;body&gt; 標籤中指定所有內容置中，而這個設定讓我們把 &lt;div&gt; 標籤裡的所有內容又回到靠左對齊的狀態。 
註：這種方法在 Dreamweaver 裡能夠正常顯示，但是下面的第二種方法就不行了。
第二種方法 
第二種方式採用位移來控制版本的置中，它的 CSS 如下：
html, body { margin: 0; }
#container {
  position: relative;
  left: 50%;
  margin-left: -380px;
  width: 760px;
}
這個方式也可以達到同樣的效果，我們挑重點解釋：
html, body { margin: 0; } - 我們在這裡拿掉了 text-align: center ，因為第二種方式沒有用到自動調整邊界。另外 CSS 可以讓我們把多個屬性設定值寫在一行裡，但是如果屬性值太多的話，建議你還是拆開成多行，比較容易維護。
 #container - 我們拿掉了margin: 0 auto; 及 text-align: left; 。因為第二種方式是以位置的移動來達到置中的目的，所以我們加入了 left: 50%; 及 margin-left: -380px; 。注意我們保留了 position: relative; ，這樣 left 屬性才會有作用。
left: 50%; - 將 div#container 的左邊的相對位置，置於畫面的中央。圖 1 是原本 div#container 應該在的位置，當我們設定 left: 50% 後，就會像圖 2 一樣了。

margin-left: -380px; - 這個設定比較難解釋，簡單說就是把整個元素的左邊界往回拉 380px (記得負值就是往回拉的意思) 。如圖三所示，我們可以看到整個版面置中了。

註：第二種方法在瀏覽器可視範圍比頁面寬度還小時，在 div#container 的左邊部分就會被遮住了，所以使用上要特別小心。
OK ，這兩種方式就能夠使版面置中。而且因為我們將所有頁面內容包在 div#container 元素裡，所以在它裡面的所有元素，其絕對位置都會以 div#container 為基準。因此以後如果有下拉式選單的話，也不用擔心它會跑位囉。

	]]>
	</description>
	<content:encoded><![CDATA[
	<p>以往，網頁開發者都會碰到這樣的問題：有時候他們會在網頁上擺放一些圖層 (像是滑鼠移過去就會出現的下拉式選單) ，但這些圖層的位置都是絕對的 ( position: absolute ) 。因此只要他們把整個版面置中後，就會發現圖層沒有跟著跑，所以這些網頁開發者僅能選擇把整個版型往左靠。但是為了符合一般瀏覽者的螢幕寬度(800 x 600)，就必須把版面的寬度固定 (例如 760px) ，所以當螢幕可以顯示的範圍較大時 (1024 x 768) ，你就會看到右邊有一大塊空白的區域了。</p>
<p>傳統的作法，都是用表格排版來解決這種問題。但是表格畢竟不是用來排版的，而且一但使用表格排版，頁面的版型就定死了，毫無靈活度可言；因此我將把表格排版這項解決方案丟到垃圾筒，改以 CSS 作為我排版的利器。</p>
<h2>調整 HTML</h2>
<p>如何用 CSS 正確實作出固定寬度且置中的版型呢？我們有兩種方式可以達到這樣的目的。不過在此之前，我們必須先將所有的網頁內容用一個 &lt;div&gt; 標籤包起來，就像下面這樣：</p>
<pre><code>&lt;html&gt;
&lt;head&gt;[略]&lt;/head&gt;
&lt;body&gt;
<font color="#ff0000">&lt;div id="container"&gt;</font>
[網頁內容]
<font color="#ff0000">&lt;/div&gt;</font>
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>我們指定這個 &lt;div&gt; 標籤的 id 屬性為 container ， id 屬性在整個頁面裡必須是唯一的。雖然大部份瀏覽器不限制頁面裡的標籤可以擁有重覆的 id 屬性，但我不建議這麼做，因為透過 JavaScript (ECMA Script)  的 document.getElementById 抓取標籤元素時，重覆的 id 屬性會造成混亂。</p>
<h2>第一種方法</h2>
<p>第一種方式純粹使用 CSS 屬性來控制版面置中，請看下面的 CSS ：</p>
<pre><code>html, body {
  margin: 0;
  text-align: center;
}
#container {
  position: relative;
  margin: 0 auto;
  width: 760px;
  text-align: left;
}</code></pre>
<p>我們一行一行解釋：</p>
<p><strong>html, body</strong> - 這行表示我們對 &lt;html&gt; 及 &lt;body&gt; 標籤做樣式設定。大部份瀏覽器的頁面內容都是以 &lt;body&gt; 為基準，但某些瀏覽器則是以 &lt;html&gt; 為基準，所以我兩個都指定。</p>
<p><strong>margin: 0;</strong> - 一般我們都會在 &lt;body&gt; 加上 topmargin="0" 及 leftmargin="0" ，使得頁面內容和瀏覽器邊緣間沒有空隙。但是 topmargin 和 leftmargin 屬性都已被 W3C 廢棄了，所以我改用 CSS 的 margin 屬性來指定。 </p>
<p><strong>text-align: center; </strong>- 重點之一，有些瀏覽器無法很正確地使版型置中，透過這個屬性，我們可以使 &lt;body&gt; 內的<strong>所有內容置中</strong>。注意，我說的是所有內容，包含所有的標籤、文字、圖片等，所以等會我們必須把它調整回來。</p>
<p><strong>#container</strong> - 這行表示我們將會<strong>一</strong>個 id 屬性值為 container 的標籤做設定。也可以這樣寫： div#container ，如此就很明確地指定是一個 id 屬性值為 container 的 &lt;div&gt; 標籤。</p>
<p><strong>position: relative; </strong>- 將元素指定為相對定位。其實這行有沒有並無太大關係，但為了相容性，我還是指定了這個屬性。絕對定位和相對定位的差別我以後有空再說明。</p>
<p><strong>margin: 0 auto;</strong> - 重點之二，這會使得 div#container 這個元素與 &lt;bod&gt; 標籤的上下邊界空間設為 0 ，而左右兩邊則自動調整。完整的寫法是 margin: 0 auto 0 auto; ，不過如果有重覆的設定時， CSS 可以讓我們只寫一次，因此 0 auto 0 auto 就可以等於 0 auto 。</p>
<p><strong>width: 760px;</strong> - 這就是我們所要指定的版面寬度囉。</p>
<p><strong>text-align: left;</strong> - 重點之三，因為我們在 &lt;body&gt; 標籤中指定所有內容置中，而這個設定讓我們把 &lt;div&gt; 標籤裡的所有內容又回到靠左對齊的狀態。 </p>
<p class="note">註：這種方法在 Dreamweaver 裡能夠正常顯示，但是下面的第二種方法就不行了。</p>
<h2>第二種方法 </h2>
<p>第二種方式採用位移來控制版本的置中，它的 CSS 如下：</p>
<pre><code>html, body { margin: 0; }
#container {
  position: relative;
  left: 50%;
  margin-left: -380px;
  width: 760px;
}</code></pre>
<p>這個方式也可以達到同樣的效果，我們挑重點解釋：</p>
<p><strong>html, body { margin: 0; }</strong> - 我們在這裡拿掉了 text-align: center ，因為第二種方式沒有用到自動調整邊界。另外 CSS 可以讓我們把多個屬性設定值寫在一行裡，但是如果屬性值太多的話，建議你還是拆開成多行，比較容易維護。</p>
<p> <strong>#container</strong> - 我們拿掉了<font color="#ff3300">margin: 0 auto;</font> 及 <font color="#ff3300">text-align: left;</font> 。因為第二種方式是以位置的移動來達到置中的目的，所以我們加入了 <font color="#ff3300">left: 50%; </font>及 <font color="#ff3300">margin-left: -380px; </font>。注意我們保留了 <font color="#ff3300">position: relative; </font>，這樣 left 屬性才會有作用。</p>
<p><strong>left: 50%;</strong> - 將 div#container 的左邊的相對位置，置於畫面的中央。圖 1 是原本 div#container 應該在的位置，當我們設定 left: 50% 後，就會像圖 2 一樣了。</p>
<p><img class="image" alt="圖一 left: 0;" src="http://www.jaceju.net/resources/css_center/css_center_1.gif" /><img class="image" alt="圖二 left: 50%;" src="http://www.jaceju.net/resources/css_center/css_center_2.gif" /></p>
<p><strong>margin-left: -380px;</strong> - 這個設定比較難解釋，簡單說就是把整個元素的左邊界往回拉 380px (記得負值就是往回拉的意思) 。如圖三所示，我們可以看到整個版面置中了。</p>
<p><img class="image" alt="圖三 margin-left: -380px;" src="http://www.jaceju.net/resources/css_center/css_center_3.gif" /></p>
<p class="note">註：第二種方法在瀏覽器可視範圍比頁面寬度還小時，在 div#container 的左邊部分就會被遮住了，所以使用上要特別小心。</p>
<p>OK ，這兩種方式就能夠使版面置中。而且因為我們將所有頁面內容包在 div#container 元素裡，所以在它裡面的所有元素，其絕對位置都會以 div#container 為基準。因此以後如果有下拉式選單的話，也不用擔心它會跑位囉。</p>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/77741.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/77741.html</guid>
	<category>CSS</category>
	<pubDate>Sat, 16 Apr 2005 11:57:44 +0800</pubDate>
</item>
<item>
	<title>用CSS顯示程式碼</title>
	<description><![CDATA[
	如何用 CSS 來呈現程式碼呢？就像是我在這篇文章裡所置放的 HTML 原始碼一樣，不論在 IE 或是 FireFox 下，都可以有不錯的顯示效果，也不容易破壞版面。但要怎麼做呢？
例如我們有以下的程式碼：
&lt;script type=&quot;text/JavaScript&quot;&gt;&lt;!--
var iCount = 0;
function changeText(objElement) {
     var oTextCount = document.getElementById(&quot;txtCount&quot;);
     var oCount = document.getElementById(&quot;hdnCount&quot;);
     iCount = objElement.value.length;
     oTextCount.innerHTML = &quot;&quot; + iCount;
     oCount.value = parseInt(iCount);
}
//--&gt;&lt;/script&gt;
為了符合文意，我們利用標準的 &lt;code&gt; 標籤將它圍繞起來：
&lt;pre&gt;&lt;code&gt;
[程式碼放這裡]
&lt;/code&gt;&lt;/pre&gt;
可是這樣還是沒辦法使程式碼排列整齊，因為空白會被忽略掉。可是如果用 &lt;pre&gt; 標籤，就會使得文件結構變得複雜許多；而且 &lt;pre&gt; 標籤也不符合我們的文意 (註) ，透過 pre 標籤，已經可以呈現程式碼效果，但是看起來很醜；因此我們就要借重 CSS 來幫我們呈現程式碼的效果，讓它更漂亮一些。
註：我後來發現光用 code 標籤圍繞的話，在複製程式碼貼到別的地方時 (例如記事本) ，整個程式會變成一行。所以後來我只好把所有 code 標籤外面，再包一層 pre 標籤。
先看看這個 CSS 的樣子： 
code {
display:block;
overflow:auto;
font-family:&quot;Courier New&quot;;
white-space:pre;
background:#F0F0F0 url(images/CodeBlock.png) repeat-y scroll left top;
border:1px solid #CCC;
margin:5px 15px 0;
padding:5px 5px 5px 20px;
line-height:1.2em;
max-height:180px;
width:90%;
}
我們一行一行來解釋：
display:block; - 這樣會使得 &lt;code&gt; 標籤內的內容成為一個方形的區塊。你可以去掉它後，看看會變成什麼樣子。
overflow:auto; - 有時候程式碼會超過我們指定的寬度，當 overflow 設定 auto 時， &lt;code&gt; 區塊就會出現捲軸，以便顯示過長的文字內容。需要注意的是，這項屬性必須配合 width 屬性，才能在大部份的瀏覽器上正常顯示。
font-family:&quot;Courier New&quot;; - 設定文字字型，這裡我是用等寬字。
white-space: pre; - 讓 &lt;code&gt; 標籤模擬出 &lt;pre&gt; 標籤的效果，如果用了 pre 標籤的話就可以不用它了。
background:#F0F0F0 url(images/CodeBlock.png) repeat-y scroll left top; - 設定銀色的背景，並在左方加入一個 code 條狀圖 (下載) 。
border:1px solid #CCC; - 設定 &lt;code&gt; 標籤的邊框。
margin:5px 15px 0; - 設定程式區塊與其他元素間的距離 (這裡即為 pre 標籤) 。
padding:5px 5px 5px 20px; - 設定程式碼與邊框間的距離，左方特地加大以容納背景圖。
line-height:1.2em; - 設定程式碼行高，這樣看起來會舒服一點。
max-height:180px; - 設定程式區塊的最大高度，以避免程式區塊讓頁面過長；不過 IE 6 下沒有作用。
width:90%; - 重要設定。沒有它的話，如果你的程式碼文字過長，MSIE 就會爆掉了。
當然這種技巧不一定只能用在顯示程式碼上，像是無框架 (no frameset) 頁面的選單、固定頁尾的頁面，都會用到這種技巧 (不過有時還得再搭配其他小技巧，有機會再談) 。
補充： (感謝「傻RD」網友的提問) 
在 &lt;code&gt; 及 &lt;/code&gt; 之間的東西要先做處理。
  - 「&amp;」(AND符號) 換成 '&amp;amp;'
  - 「&quot;」(雙引號) 換成 '&amp;quot;'
  - 「&#039;」 (單引號) 換成 '&amp;#039;'
  - 「&lt;」 (小於符號) 換成 '&amp;lt;'
  - 「&gt;」 (大於符號) 換成 '&amp;gt;'
如果有 Dreamweaver 的話，可以將程式先貼到 Dreamweaver 的設計檢視上 (就是所見即所得) ， Dreamweaver 會幫我們轉換好。然後再切換到程式碼檢視，把已經轉好的原始碼複製下來即可。
如果沒有 Dreamweaver ，就用上面的轉換規則轉換也是可以的。

	]]>
	</description>
	<content:encoded><![CDATA[
	<p>如何用 CSS 來呈現程式碼呢？就像是我在<a href="http://blog.roodo.com/jaceju/archives/63111.html" target="_blank">這篇文章</a>裡所置放的 HTML 原始碼一樣，不論在 IE 或是 FireFox 下，都可以有不錯的顯示效果，也不容易破壞版面。但要怎麼做呢？</p>
<p>例如我們有以下的程式碼：</p>
<pre><code>&lt;script type=&quot;text/JavaScript&quot;&gt;&lt;!--
var iCount = 0;
function changeText(objElement) {
     var oTextCount = document.getElementById(&quot;txtCount&quot;);
     var oCount = document.getElementById(&quot;hdnCount&quot;);
     iCount = objElement.value.length;
     oTextCount.innerHTML = &quot;&quot; + iCount;
     oCount.value = parseInt(iCount);
}
//--&gt;&lt;/script&gt;</code></pre>
<p>為了符合文意，我們利用標準的 &lt;code&gt; 標籤將它圍繞起來：</p>
<pre><code>&lt;pre&gt;&lt;code&gt;
[程式碼放這裡]
&lt;/code&gt;&lt;/pre&gt;</code></pre>
<p><del>可是這樣還是沒辦法使程式碼排列整齊，因為空白會被忽略掉。可是如果用 &lt;pre&gt; 標籤，就會使得文件結構變得複雜許多；而且 &lt;pre&gt; 標籤也不符合我們的文意 (註) ，</del>透過 pre 標籤，已經可以呈現程式碼效果，但是看起來很醜；因此我們就要借重 CSS 來幫我們呈現程式碼的效果，讓它更漂亮一些。</p>
<p class="note">註：我後來發現光用 code 標籤圍繞的話，在複製程式碼貼到別的地方時 (例如記事本) ，整個程式會變成一行。所以後來我只好把所有 code 標籤外面，再包一層 pre 標籤。</p>
<p>先看看這個 CSS 的樣子： </p>
<pre><code><font color="#990000">code</font> {
<font color="#0033FF">display:</font>block;
<font color="#0033FF">overflow:</font>auto;
<font color="#0033FF">font-family:</font>&quot;Courier New&quot;;
<font color="#0033FF">white-space:</font>pre;
<font color="#0033FF">background:</font>#F0F0F0 url(<a href="http://www.jaceju.net/theme/theme7/images/CodeBlock.png">images/CodeBlock.png</a>) repeat-y scroll left top;
<font color="#0033FF">border:</font>1px solid #CCC;
<font color="#0033FF">margin:</font>5px 15px 0;
<font color="#0033FF">padding:</font>5px 5px 5px 20px;
<font color="#0033FF">line-height:</font>1.2em;
<font color="#0033FF">max-height:</font>180px;
<font color="#0033FF">width:</font>90%;
}</code></pre>
<p>我們一行一行來解釋：</p>
<p><strong>display:block; </strong>- 這樣會使得 &lt;code&gt; 標籤內的內容成為一個方形的區塊。你可以去掉它後，看看會變成什麼樣子。</p>
<p><strong>overflow:auto;</strong> - 有時候程式碼會超過我們指定的寬度，當 overflow 設定 auto 時， &lt;code&gt; 區塊就會出現捲軸，以便顯示過長的文字內容。需要注意的是，這項屬性必須配合 width 屬性，才能在大部份的瀏覽器上正常顯示。</p>
<p><strong>font-family:&quot;Courier New&quot;;</strong> - 設定文字字型，這裡我是用等寬字。</p>
<p><strong>white-space: pre;</strong> - 讓 &lt;code&gt; 標籤模擬出 &lt;pre&gt; 標籤的效果，如果用了 pre 標籤的話就可以不用它了。</p>
<p><strong>background:#F0F0F0 url(images/CodeBlock.png) repeat-y scroll left top;</strong> - 設定銀色的背景，並在左方加入一個 code 條狀圖 (<a href="http://www.jaceju.net/theme/theme7/images/CodeBlock.png" target="_blank">下載</a>) 。</p>
<p><strong>border:1px solid #CCC;</strong> - 設定 &lt;code&gt; 標籤的邊框。</p>
<p><strong>margin:5px 15px 0;</strong> - 設定程式區塊與其他元素間的距離 (這裡即為 pre 標籤) 。</p>
<p><strong>padding:5px 5px 5px 20px;</strong> - 設定程式碼與邊框間的距離，左方特地加大以容納背景圖。</p>
<p><strong>line-height:1.2em;</strong> - 設定程式碼行高，這樣看起來會舒服一點。</p>
<p><strong>max-height:180px;</strong> - 設定程式區塊的最大高度，以避免程式區塊讓頁面過長；不過 IE 6 下沒有作用。</p>
<p><strong>width:90%;</strong> - 重要設定。沒有它的話，如果你的程式碼文字過長，MSIE 就會爆掉了。</p>
<p>當然這種技巧不一定只能用在顯示程式碼上，像是無框架 (no frameset) 頁面的選單、固定頁尾的頁面，都會用到這種技巧 (不過有時還得再搭配其他小技巧，有機會再談) 。</p>
<h2>補充： (感謝「傻RD」網友的提問) </h2>
<p>在 &lt;code&gt; 及 &lt;/code&gt; 之間的東西要先做處理。<br />
  - 「&amp;」(AND符號) 換成 '&amp;amp;'<br />
  - 「&quot;」(雙引號) 換成 '&amp;quot;'<br />
  - 「&#039;」 (單引號) 換成 '&amp;#039;'<br />
  - 「&lt;」 (小於符號) 換成 '&amp;lt;'<br />
  - 「&gt;」 (大於符號) 換成 '&amp;gt;'</p>
<p>如果有 Dreamweaver 的話，可以將程式先貼到 Dreamweaver 的設計檢視上 (就是所見即所得) ， Dreamweaver 會幫我們轉換好。然後再切換到程式碼檢視，把已經轉好的原始碼複製下來即可。</p>
<p>如果沒有 Dreamweaver ，就用上面的轉換規則轉換也是可以的。</p>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/75525.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/75525.html</guid>
	<category>CSS</category>
	<pubDate>Thu, 14 Apr 2005 23:23:05 +0800</pubDate>
</item>
<item>
	<title>連結 CSS 樣式說明</title>
	<description><![CDATA[
	將元素的 position 指定為 relative 後，會使得元素的寬高受到父元素寬高的影響。 例如 a 標籤被包在 li 標籤內時，如果 li 標籤寬度設定為 100px ， a 標籤的 Box 寬度 (等於 margin + border + padding + width) 就會等於 100px。這樣一來，連結的作用區域就不會只受限於文字或圖片上，而可以佔滿整個父元素。
a {
    position: relative;
    /* 如果連結是在 td 內的話，則要再加入底下這個設定 */
    display: block;
}

如果兩種樣式是一樣的時候，不用寫兩次；利用逗號將兩者分開即可。 如果想要讓 link 和 visited 樣式一樣的話，也最好一起指定。
a:link, a:visited {
    display: block;
    font-size: 12px;
    text-decoration: none;
    color: #495F6E;
    background: #F2F3F4;
    font-family: &quot;Arial&quot;;
    padding: 3px;
    margin: 0;
}

連結樣式指定的順序必須為 link -&gt; visited -&gt; hover -&gt; active 。而 hover 和 active 會繼承 link 和 visited 的設定值，所以如果要變動的話，僅需更改想變動的屬性即可。
a:hover {
    color: #FFFFFF; /* 變更文字顏色 */
    background: #990000; /* 變更背景顏色 */
    text-decoration: underline; /* 變更文字樣式 */
}


	]]>
	</description>
	<content:encoded><![CDATA[
	<p>將元素的 position 指定為 relative 後，會使得元素的寬高受到父元素寬高的影響。 例如 a 標籤被包在 li 標籤內時，如果 li 標籤寬度設定為 100px ， a 標籤的 Box 寬度 (等於 margin + border + padding + width) 就會等於 100px。這樣一來，連結的作用區域就不會只受限於文字或圖片上，而可以佔滿整個父元素。</p>
<pre><code><font color="#990000">a</font> {
    <font color="#0033FF">position:</font> relative;
    <font color="#009900">/* 如果連結是在 td 內的話，則要再加入底下這個設定 */</font>
    <font color="#0033FF">display:</font> block;
}
</code></pre>
<p>如果兩種樣式是一樣的時候，不用寫兩次；利用逗號將兩者分開即可。 如果想要讓 link 和 visited 樣式一樣的話，也最好一起指定。</p>
<pre><code><font color="#990000">a:link, a:visited</font> {
    <font color="#0033FF">display:</font> block;
    <font color="#0033FF">font-size:</font> 12px;
    <font color="#0033FF">text-decoration:</font> none;
    <font color="#0033FF">color:</font> #495F6E;
    <font color="#0033FF">background:</font> #F2F3F4;
    <font color="#0033FF">font-family:</font> &quot;Arial&quot;;
    <font color="#0033FF">padding:</font> 3px;
    <font color="#0033FF">margin:</font> 0;
}</code></pre>

<p>連結樣式指定的順序必須為 link -&gt; visited -&gt; hover -&gt; active 。而 hover 和 active 會繼承 link 和 visited 的設定值，所以如果要變動的話，僅需更改想變動的屬性即可。</p>
<pre><code><font color="#990000">a:hover</font> {
    <font color="#0033FF">color:</font> #FFFFFF; <font color="#009900">/* 變更文字顏色 */</font>
    <font color="#0033FF">background:</font> #990000; <font color="#009900">/* 變更背景顏色 */</font>
    <font color="#0033FF">text-decoration:</font> underline; <font color="#009900">/* 變更文字樣式 */</font>
}
</code></pre>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/jaceju/archives/66367.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/66367.html</guid>
	<category>CSS</category>
	<pubDate>Fri, 08 Apr 2005 16:07:15 +0800</pubDate>
</item>
</channel>
</rss>