九又二分之一咖啡豆
ninehalf coffee bean

2011年11月27日

簡單到不行的美化網頁技巧(一)、表格的美化

網頁中,通常會用表格(<table>...</table>)來呈現多欄位資料,但沒經過美化的表格,除了會搶過原本要顯示的資料外,更會造成眼睛的莫名壓力,下面就根據美化的一些簡單原則,來展示一次如何美化網頁上的表格。



網頁html你會這樣寫:
<table border="1px" cellspacing=0 cellspadding=0 >
<tr><td>欄位名稱一</td><td>欄位名稱二</td><td>欄位名稱三</td><td>欄位名稱四</td></tr>
<tr><td>資料一</td><td>欄位內容</td><td>欄位內容</td><td>欄位內容</td></tr>
<tr><td>資料一</td><td>欄位內容</td><td>欄位內容</td><td>欄位內容</td></tr>
</table>

實際會長這樣:
欄位名稱一欄位名稱二欄位名稱三欄位名稱四
資料一欄位內容欄位內容欄位內容
資料一欄位內容欄位內容欄位內容

OOPS! 好醜是吧?
讓我們用一些CSS美化一下,美化之前,把每個元素(<table>,<tr>,<td>)加上class,如下:
<table class="fancytable" >
<tr class="headerrow"><td>欄位名稱一</td><td>欄位名稱二</td><td>欄位名稱三</td><td>欄位名稱四</td></tr>
<tr  class="datarowodd"><td>資料一</td><td>欄位內容</td><td>欄位內容</td><td>欄位內容</td></tr>
<tr  class="dataroweven"><td>資料一</td><td>欄位內容</td><td>欄位內容</td><td>欄位內容</td></tr>
</table>
(PS. <td>太多,不加class,等等用階層指定CSS來套)

再來,把上述的class名稱,都寫在html中的<head>...</head>之間,如下:
<head>
<style>
.fancytable{}
.headerrow{}
.datarowodd{}
.dataroweven{}
</style>
</head>
(ps:為了示範,暫時不把css獨立出去成一個檔,而是直接在head區定義)

接著開始美化過程:

第一個必要技巧:「框線顏色千萬不要是黑的,資料顯示文字也是!」
黑色框線,容易搶掉要顯示的資料,而且容易增加觀看者眼睛的疲勞感。
除非你有搭配好的色系,否則保險一點的框線顏色是灰色或淡灰,而字的顏色改成深灰色,所以改成:
.fancytable{border:1px solid #cccccc; width:100%; border-collapse:collapse;}
新增加指定每格字的顏色為深灰色,文字預設都置中:
.fancytable td{ border:1px solid #cccccc; color:#555555; text-align:center;}
(PS:表格通常會設為自動滿寬,所以後面先加上 [width:100%] 的敘述)

第二個必要技巧:「奇偶列顏色千萬不要都一樣!」
讓奇偶列不同顏色,可以增加閱讀舒適度,顏色建議是:一列白色、一列淺顏色(非白色)相間,所以加上:
.datarowodd{background-color:#ffffff;}
.dataroweven{ background-color:#efefef;}

若是要給討厭的IE6顯示,請多補上這兩列:
.datarowodd td{background-color:#ffffff;}
.dataroweven td{ background-color:#efefef;}


第三個必要技巧:標題列指定深色背景色、前景色用淺色或白色
標題通常要醒目,且最好不要跟一般資料列相同顏色,故把背景設為較深的顏色,前景(字)顏色設為白色,文字最好也置中顯示。
.headerrow{ background-color:#0066cc;}
新增加文字置中:
.headerrow td{ color:#ffffff; text-align:center;}


第四個必要技巧:加大每列高度,增加閱讀性
不用吝嗇畫面高度,適宜的列高度能減少閱讀時的疲勞感,增加每列資料的辨識度。
所以在原本的 .fancytable td{...}裡面加上列高:
.fancytable td{border:1px solid #cccccc; color:#555555;text-align:center; line-height:28px;}

經過上述一些簡單到不行的原則後,最後的css內容如下:
.fancytable{border:1px solid #cccccc; width:100%;border-collapse:collapse;}
.fancytable td{border:1px solid #cccccc; color:#555555;text-align:center;line-height:28px;}
.headerrow{ background-color:#0066cc;}
.headerrow td{ color:#ffffff; text-align:center;}
.datarowodd{background-color:#ffffff;}
.dataroweven{ background-color:#efefef;}
.datarowodd td{background-color:#ffffff;}
.dataroweven td{ background-color:#efefef;}


第五個可有可無的技巧:加上div自定邊框
我會在<table>...</table>外面再包一層div,變成<div class="sexyborder"><table>...</table></div>,然後css裡加上對sexyborder的描述,如下:
.sexyborder{
     border:1px solid #0066cc; padding:5px;
     -webkit-border-radius: 5px;
     -moz-border-radius: 5px;
     border-radius: 5px;
}


最後表格變成這樣: (若你是比較新的瀏覽器,則框的角可以正常顯示圓角)
欄位名稱一欄位名稱二欄位名稱三欄位名稱四
資料一欄位內容欄位內容欄位內容
資料一欄位內容欄位內容欄位內容

是不是跟原來的table長相差很多呢?
技巧很簡單,你一定也會,但因為簡單,你卻沒這樣做,還用著醜醜的表格,這是誰的問題?

 [UI非難事,只存乎一心], 咱們下次見!

2 意見:

  1. 謝謝您寫這篇文章 另小弟受益良多
    不過想請教一下 如果小弟想在 欄位名稱四的欄位內容中的文字 靠框框的左邊
    應該要加些什麼呢?

  2. 十分有用的教學!
    原本死板的網頁瞬間變成類似PowerPoint2010表格般華麗

張貼留言

Blogroll

Blogger news

About