歡迎來到小豬圈!

Showing posts with label 網站開發. Show all posts
Showing posts with label 網站開發. Show all posts

2011-09-08

純 CSS 式預載 :hover 圖片

<style type="text/css">
.button
{
  background: url("button_hover.png");
}
.button div
{
  background: url("buttonr.png");
}
.button div:hover
{
  background: url("button_hover.png");
}
</style>
<div class="button"><div></div></div>

其實就是先把 :hover 所需圖片,先放在下面。

  • 這只適合同大小,非透明的圖片。
  • 預載的時間點就和其它圖片一樣,而不像用 javascript 可以設定在網頁載入之後。

2011-09-07

IE <button> 送出非預期的值

<button type="submit" name="foo" value="bar">text</button>

上面這段一般會預期送出bar,但在IE7之前的版本會送出text。

這次專案客戶反應表單不能使用,在各瀏覽器(IE、FF、Chrome、Opera)都試過後,才在IE8的相容性檢視才發視這個問題。

其實這問題之前就知道了,只是長久下來只記得不要用 <button> ,久而久之就忘了“為什麼?”。這次使用 <button> 只是單純為了讓有多個送出按鈕的表單,其按鈕所顯示的文字與送出的值分開,再加上沒有用 IE6/ 7測試,就被這個老問題給再炸了一遍。

2007-12-20

Yahoo UI 是好物

  • 真的是易學易用,不過速度似乎有點慢…。
  • 事件綁定時要去掉“on”(不知是否我眼挫,這件事我在文件上沒找到?),如:
    window.onload = doSomething;
    // 上述改用 YUI 如下
    YAHOO.util.Event.addListener(window, 'load', doSomething);
    
  • YAHOO.util.Event.addListener 會自動附加(而不是覆蓋)綁定,以前要自已做到這功能的話得如下:
    function addListener(newListener) {
      var oldListener = window.onload;
      if (typeof window.onload != 'function') {
        window.onload = newListener;
      } else {
        window.onload = function() {
          oldListener();
          newListener();
        }
      }
    }
    
  • 範例不錯,但文件不夠完備。像 API Doc 的部份,如果能每個 Method 附上簡短範例會更好(像 PHP Manual 那樣)。

2007-12-15

(X)HTML content-type 的選擇

  • 這裡說的 Content-type 和 Media type 基本上是一樣的東西,源自於MIME type。其常見的內容項目有:text/html 、 image/gif 、 application/octet-stream … 等。
  • 在 HTTP 協定中會送出 Content-Type 的 header 來指明接下來要傳送的資料類型。如:
    Content-Type: text/html
    
  • XHTML Media Types - Summary 該文總結中指出: HTML 應該使用 text/html , 而 XHTML 應該使用 application/xhtml+xml,但在考量與 HTML 相容的情況下也可以使用 text/html 。
  • IANA | MIME Media Types

2007-12-07

Charset (字元集)的選擇:UTF-8!

  • Just UTF-8!這該算是資訊界難得的共識吧。
  • UTF-8 是一種不固定長度的編碼方式,原定義在 ASCII (128 以下) 佔用 1byte,而其它語言的字元則佔 2、3或4個 bytes。
  • 漢字在 UTF-8 中佔 3 bytes ,相較於用 Big5(字元固定 2 bytes)編碼的文件,其所佔用的空間較多。
  • 時至今日,大多的編輯器都能正確支援 UTF-8。唯一要注意的是:不要寫入 BOM,像是 Windows 內建的 Notepad 在轉存 UTF-8 格式時會自動在檔案頭開插入 EF BB BF ,雖然在支援 UTF-8 編輯器不會顯示出來,但這會造成一些問題(如驗証 HTML 時會出錯)。
  • Byte-order mark - Wikipedia, the free encyclopedia

DTD 的選擇:Strict!

  • DTD Document Type Definition 也就是一般網頁原始碼上<!DOCTYPE開頭的東西。個人推薦的是 XHTML 1.0 StrictHTML 4.01 Strict
  • 無論是選擇 XHTML 或 HTML,都要 Strict!Strict 可不僅僅是宣告,在撰寫時也要避免依賴瀏覽器容錯的能力。
  • 選擇 HTML 4.01 Strict 如 Yahoo! UI LibraryGrids CSS 所推薦的:
    We use and recommend this !DOCTYPE to trigger Standards Mode in browsers with multiple rendering modes:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
    
  • 選擇 XHTML 1.0 Strict 則是在程式處理上比較方便:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
  • HTML 4.01 Specification
  • XHTML™ 1.0 The Extensible HyperText Markup Language (Second Edition)

2007-11-30

關於 Accessibility 與 Usability

Unobtrusive Javascript

  • Unobtrusive JavaScript (也有用 Unobstructive 的) 之前看到的一個詞,個人暫譯“無妨礙的 Javascript”。
  • 並不是個新東西,意指在設計時考量到沒有 script 的環境下也能正常(或折衷)執行,而不是讓使用者對著 script error 大眼瞪小眼。
  • 兩個面向,一是瀏覽者完全沒有或關閉 script 的功能;二是使用者部份載入(網路問題、NoScript)、或因瀏覽器特性…等原因,script 沒有正確執行。
  • 一個常見的範例:
    <a href="..script..">link</a>
    <a href="..url.." onclick="..script..">link</a>
  • 另一個範例:
    <input type="button" onclick="doSubmit()" />
    <input type="submit" onclick="doSubmit()" />
    
  • Unobtrusive JavaScript - Wikipedia, the free encyclopedia

2007-11-24

URL 的長度限制

2007-10-13

text-overflow 自動截斷過長文字並補上省略符號

  • IE 6 以上版本及 Opera (最早支援的版本未知,我目前用 9.23 是支援的) 支援
  • .ellipsis{
       overflow:hidden;
       white-space:nowrap;
       text-overflow:ellipsis; /* for IE, O */
       -o-text-overflow:ellipsis; /* for Opera priv */
       width:10em;
    }
    
    <p class="ellipsis">這是一段沒什麼意義,但是很長、很長、很長、很長、很長、很長的文字。</p>
    
  • 同時需設定 width(相對要設定display:block;) 、 overflow:hidden; 、 white-space:nowrap; 等屬性。
  • MSDN textOverflow Property (defaults, A, ABBR, ...)
  • jide.fr » Emulate text-overflow:ellipsis in Firefox with CSS
  • 上一個鏈結提供的方式,我試用時得將(第12行) html>body .ellipsis span:after { 改成 html>body .ellipsis:after { 才能運作。

不得不駭(CSS) IE7

  • 因為 IE7 增加/修正了一些對 CSS 標準的支援,其中支援 !important 應該是對(有用這項 CSS Hack 的)網站開發人員最麻煩的一項。
  • 這也是不建議使用 CSS Hacks 的原因之一,某項 hack 有可能會遇到跨瀏覽器、跨版本支援等非預期的情況。
  • CSS Hack « 就是愛程式

2007-09-27

IE 寬度解譯與建議標準不同的問題

  • IE解析寬度(width)是內容寬度加上padding及border寬度。
  • 而建議標準的寬度僅指內容寬度,不包括margin、padding與border的寬度。
  • Cascading Style Sheets, level 1 Formatting model.
  • 其中一個方法是個人不喜歡用的 CSS hack。
  • 解決方法之一是用兩層block(如div),並避免在對同一層同時定義width與padding跟border-width。像用內層的margin取代外層的padding等。

2007-09-14

安裝多重版本IE

2007-09-05

網頁用UTF-8編碼 在 IE 無法正常顯示

  • 會有這個問題 是因為IE用title裡的字判斷編碼關係
  • 把 title 放在 meta 字集宣告之後即可
相關連結

2007-06-09

檢查表單 <form> 的 referer

檢查表單資料是不是“來自它應該來的地方”,有心人士可以在本地端建立一個表單,可以藉此略過一些檢查來送出資料。

PHP 可以用 $_SERVER['HTTP_REFERER'] 取得referer,但就如同PHP Manual寫的,這個值是不可靠的,所以只能當做基本的檢查。比較好的方法,可以用hidden欄位插入特定的值…(秘)。

'HTTP_REFERER'
The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted.

2007-01-22

為splash page提供一個skip link

  • splash page指的是網站或程式開啟時,用來廣告或吸引注意的第一頁,且通常沒有放置網站主要的內容。若用 Flash 動畫(或其它)時,需提供讓使用者跳過不看的鏈結,而且該鏈結不能只做在Flash動畫裡
  • 功能列表的鏈結,若使用者無法使用,就不應該顯示或提供鍵結,浪費使用者時間。

標籤分類

Labels

Google Analytics Tracking Code

About Me

My photo
Keelung, R.O.C, Taiwan
一個不學無術、混吃等死的傢伙…