takeasy

your imagination is my power


CSS 版面控制: 固定置中版面


網頁設計師為了版面美觀,時常會想讓網頁的某塊區域置中。在以前拿表格來排版時,我們可以用以下方式達成目的:


Example:
<table align="center" border="1" width="200">
  <tr><td>網頁內容</td></tr>
</table>

Screen:

網頁內容


不過,以表格排版的話頁面的版型就定死了,毫無靈活度可言;比較好的方法是採用 CSS 各種特性來排版,請繼續看下去。


彈性寬度

如果你的網頁寬度想依視窗寬度調節(例如訂為視窗寬的 80%),那麼便可以採用這種方式。首先我們必須先把整個網頁內容用一個 div 標籤包起來,例如:

Example:
<html>
    <head>[網頁標題]</head>
    <body>
        <div id="container">
        [網頁內容]
        </div>
    </body>
</html>

我們指定這個 div 標籤的 id 屬性為 container (依據規範,id 屬性的值在整個頁面裡必須是獨一無二的,不可以重複)。設定完畢以後,在 head 標籤之中插入此段 CSS 程式碼:

<style type="text/css">
#container {
  margin: 0 auto;
  width: 80%; 
}
</style>

這代表此樣式要套用至 id 屬性為 container 的區塊(#container),區塊寬度為視窗寬的 80%,上下邊界為零、左右邊界則由瀏覽器自動調節(auto)。如此一來,頁面就會自動置中了。

固定寬度

如果你的版面寬度固定(如 760 像素),則可以把前例的 width 特性值修改為 760px。此外對於固定寬度的版面,我們還有另一種設定方式

#container {
  position: relative;
  left: 50%;
  margin-left: -380px; /* 760 除以 -2 */ 
  width: 760px;
}

這個方式比較奇妙點,position: relative; 代表此區塊將以相對方式,依其母元素(在此例為 body)的位置來定位。加上這條特性後,由於尚未指定位置,container 會依照預設值擺在母元素的左上角,如圖一所示。


加上 left: 50%; 之後,此區塊左緣將移至母元素的中線,如圖二。


第三條 margin-left: -380px; 比較難解釋,簡單說就是把整個元素的左邊界往回拉 380px(區塊寬度 760px 的一半,負值就是往回拉)。如圖三所示,我們可以看到整個版面置中了。

軟件推介:網頁草稿設件軟件Balsamiq Mockups


最近在煩惱網站設計、Template 設計等,所有設計都是由靈感至草稿開始。Balsamiq Mockups 提供手稿風格的 mockup presentation,包括有網上版、及下載版(Adobe Air Application)

。也因為 Balsamiq Mockups 是 Adobe Air 的應用程式,所以可以跨平台,不論 Windows、Mac或 Linux 都可以跑,非常方便。離線版也可以用快速鍵進行剪貼簿操作,而線上版就無法用快速鍵了。下載版(US$79)畫好的layout 可以另存成一個 xml 檔,也可以存成 png 圖片檔。

DESKTOP APPLICATIONS

DIALOG BOXES

WEB APPLICATIONS

WEB SITES


IPHONE APPLICATIONS

RICH INTERNET APPLICATIONS


Balsamiq Mockups 內建75種常用的網頁元件,要用時拉到工作底稿上,調一下位置和大小,填一下內部文字就好了。很快就可以畫出一個有模有樣,清爽易讀的網頁 layout 草稿。

Balsamiq Mockups 還有一個頗實用的功能,可切換到全螢幕展示模式;進入全螢幕模式後,畫面上會出現一個超大的滑鼠指標,便於指向你要解說的部位,這樣連雷射筆都可以省下來了。

要輸入中文時,要先勾選 View – Use System Fonts,這樣就能正常使用中文。


Sample:Mockups To Go

教學:

http://www.youtube.com/watch?v=aJTuFRaIi_g



網頁設計技巧:CSS固定footer


當做一個頁面時,如果頁面內容很少,不足於填充整個畫面,按普通的佈局,就會出現下面圖片中的樣子(也就是底部內容並沒有位於窗口的底部,而留下了大量空白。


對於追未完美的設計師來說,這是不美觀的。網上有一些解決方案,但會出現當改變窗口高度時,底部和正文重疊的BUG。儘管沒有多少人會有事沒事兒的去改變窗口高度,但設計嘛,追求的就是盡善盡美。


下面是我找到的一個比較完美的方法,來自國外的設計達人,純CSS,可以實現:當正文內容很少時,底部位於窗口最下面。當改變窗口高度時,不會出現重疊問題。



HTML代碼:
<div id="wrap">
    <div id="main" class="clearfix">
        <div id="content">
        </div>
        <div id="side">
        </div>
    </div>
</div>
<div id="footer">
使用這個佈局的前提,就是footer要在總的div容器之外,footer使用一個層,其它所有內容使用一個總的層。如果確實需要到添加其它同級層,那這個同級層就必須使用position:absolute進行絕對定位。

CSS代碼:
html, body, #wrap {height: 100%;}
body > #wrap {height: auto; min-height: 100%;}
#main {padding-bottom: 150px;}  /* 必須使用和footer相同的高度 */
#footer {position: relative;
    margin-top: -150px; /* footer高度的負值 */
    height: 150px;
    clear:both;}
需要注意的就是#main的padding值、footer的高度和負margin值,需要保持一致。

瀏覽器的兼容:
對#main部份進行著名的Clearfix Hack:
clearfix:after {content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;}
.clearfix {display: inline-block;}
/* Hides from IE-mac \*/
* html .clearfix { height: 1%;}
.clearfix {display: block;}
/* End hide from IE-mac */
測試於兩欄懸浮佈局,兼容各大主流瀏覽器,包括Google Chrome。


  • 網絡上之前比較知名的footer佈局有Ryan Faits創造的,不過它的方法在HTML代碼中會有一個空的div層。嚴格來說,是不符合語義網代碼標準的。
  • 另外,還有一篇Exploring Footers article from A List Apart,但使用了一些JavaScript代碼。

原站:CSS Sticky Footer

網頁設計技巧:8個簡單和實用的CSS技巧


最好的解決方案往往是最簡單的,這裏列出8個CSS技巧,非常簡單,簡單到只需要寫一行代碼,只需要定義一個屬性參數。非常適合學習CSS的新手朋友閱讀。

  1. 使用line-height來達到垂直居中
  2. line-height:24px;
    
    當你有一個固定高度的區域,你可以通過把line-height和區域的高度設為相同的數值而達到垂直置中。 Demo
  3. 使用overflow防止内容溢出
  4. #main{ overflow:hidden; }
    
    這個應該基本都知道了。可以在限制內容塊的寬度的前提下,隱藏那些有可能溢出的文本或圖像。雖然會導致一些內容被隱藏,但總比溢出撐開影響頁面佈局要好。
  5. 強制在同一行內顯示所有內文
  6. a{ white-space:nowrap;}
    強制在同一行內顯示所有內文,直到內文結束或者< br>。
  7. 始終顯示Firefox垂直捲軸
  8. html{ overflow:-moz-scrollbars-vertical;}
    Firefox默認是不顯示垂直捲軸的,而這個參數設置將能讓它始終顯示垂直捲軸。
  9. 内容置中
  10. margin:0 auto;
    這個大家都應該知道了,但是這個設置並不是在所有流覽中都有效。並且,在相同的流覽器中,如果受其他影響,也很可能會失去效果。
  11. 移除IE的默認捲軸
  12. textarea{ overflow:auto;}
    IE默認是顯示內文框的垂直捲軸,這個參數將移除這個捲軸,除非輸入的內容超過內文框的高度。
  13. 強制列印時自動分頁
  14. h2{ page-break-before:always;}
    這個屬性參數可以「始終在物件之前插入頁分割符」,主要用於需要列印的頁面設置。
  15. 移除點擊鏈結時的虛線框
  16. a:active, a:focus{ outline:none;}
    大家都知道,點擊鏈結時,通常會出現虛線框,影響美觀。這個屬性設置可以移除點擊時的虛線框。

用CSS實現網頁垂直置中


在設計頁面佈局的時候,我們很可能需要到一些內容可以達到垂直置中。如果使用<table>裏面的valign屬性,那很容易達到內容的垂直置中。但使用<table>的缺點就是,你很可能就為了達到垂直置中,就弄了一個煩人的表格框架。以下是其中一個解決方法,純CSS實現頁面的垂直居中。

  1. HTML代碼
  2. <div id="container">
     <div id="position">
      <div id="content">
      Text Here.
      </div>
     </div>
    </div>
    
  3. CSS代碼
  4. <STYLE type="text/css">
     #container { width: 100%; height: 100%; display: table; }
     #position { display: table-cell; vertical-align: middle; 
    width: 100%; text-align: center; }
    </STYLE>
    
    這串CSS代碼,幾乎支持所有的browser (除了IE之外),所以需要對IE進行一個小小的Hack
  5. 對IE的Hack
  6. <!--[if IE]>
    <STYLE type="text/css">
     #container { position: relative; }
     #position { position: absolute; top: 50%; }
     #content { position: relative; top: -50%; }
    </STYLE>
    <![endif]–>
    
按這裏查看 Demo下載

網頁設計技巧:偵測解析度進入不同網頁

自動辨識瀏覽者解析度而進入不同的網頁

放於<head>與</head>之間:


<script type="text/javascript"> 
<!-- 
var swidth=1024var sheight=768;
if (screen.width<swidth||screen.height<sheight)
{ location.replace("800.htm"); } 
else { location.replace("1024.htm"); }
//--> 
</script> 
800.htm和1024.htm就是自動辨識解析度進入的網頁

網頁設計:做網站該注意哪些基本要素?

以下內容參考Google對網站管理員的建議,適當的地方我們已經添加註解。

設計與內容指南

  • 網站應具有清晰的層次結構和文本鏈接。每個網頁應至少可以通過一個靜態文本鏈接打開。文本鏈接不同於通過javascript等其他代碼生成的鏈接。如有些網頁下面的「打印」即不是通過文本鏈接實現。
  • 為用戶提供網站地圖,列出指向網站重要部分的鏈接。如果網站地圖上的鏈接超過或大約為 100 個,則需要將網站地圖拆分為多個網頁。
  • 網站應實用且信息豐富,網頁文字應清晰、準確地表述要傳達的內容。
  • 要考慮到用戶會使用哪些字詞來查找您的網頁,確保網站上確實包含了這些文字。 深刻理解這一點,會讓你受益匪淺。
  • 儘量使用文字而不是圖形來顯示重要的名稱、內容或鏈接。Google 抓取工具無法識別圖形中所含的文字。 特別是友情鏈接時,如果你是為了提供PR和排名,則用文字鏈接是重要的。
  • 確保對 TITLE 和 ALT 標記屬性的描述和表達準確無誤。切記為網頁的圖片加上 ALT描述,這裡是你放關鍵詞的好地方。
  • 檢查鏈接是否損壞,並確保 HTML 格式正確。 請使用 Google網站管理員工具時刻檢查自己網站的鏈接,如有損壞,注意刪除或修正。
  • 如果您決定採用動態頁面(即網址中包含"?"字符),請注意並非所有搜索引擎的抓取工具都能像抓取靜態網頁一樣抓取動態網頁。縮短參數長度並減少參數數目對動態頁面是有幫助的。建議採用URL重寫技術進行動態鏈接靜態化。
  • 將特定網頁上的鏈接限制在合理的數量內(少於 100 個)。如本頁,包含內部鏈接和外部鏈接不要超過 100個。

網站準備就緒之後

  • 將其他相關網站鏈接到您的網站。 就是尋找友情鏈接。
  • 將網站提交給 Google,網址為:http://www.google.com/addurl.html 。
  • 將 Sitemap 作為 Google網站管理員工具的一部分提交。Google 使用您的 Sitemap 來瞭解您網站的結構,並提高對您網頁的抓取率。
  • 確保應瞭解您網頁的所有網站都知道您的網站已處於在線狀態。即指向你網站的鏈接都需要是正常的,而非損壞。
  • 將您的網站提交到相關的目錄,例如,Open Directory Project 和 Yahoo!,以及其他特定行業的專業網站。

網頁設計技巧:IE6支援png圖檔的方法。



PNG 是一種很好很強大的圖檔格式,可支援 32 bit 色彩,GIF 只到 256 色,色彩上更細緻,而且不會像 JPEG 會有壓縮性的破壞,並可以儲存成透明格式,檔案也不會大的離譜,這些都是 JPEG 望塵莫及的。

這麼好用的圖片格式,很可惜的是在現在瀏覽器市場市佔率第一名的 IE 6 上卻不支援,網頁設計師們只能退而求其次,選擇色彩較少的 GIF 檔,而且 GIF 在轉成透明圖時,會有難看的毛邊出現,並不像 PNG 那般平順。

下面介紹的方法可以讓這個古老、萬惡的IE6也可以讀取PNG透明圖檔,而不在出現醜暴的灰底。

  1. 下載pngfix.js檔案,儲存到適當的地方。
  2. 然後將下列語法貼至<html></html>之間(我也看過有人貼<head></head>在之間,可我測試是無效的。
<!–-[if is IE 7.]>
<script defer type='text/javascript' src='pngfix.js'></script>
<![endif]–->
註一:src='pngfix.js' 注意該js檔案的路徑位置是否與你上傳的路徑相同
註二:src='pngfix.js' 可以寫絕對路徑。