有關 Acid3 測試

Saturday, February 21, 2009

最近看電腦雜誌都開始用 Acid3 測試的瀏覽器對未來 Web 技術的支持度,但要留意 Acid3 的這麼一句:

To pass the test, a browser must use its default settings, the animation has to be smooth, the score has to end on 100/100, and the final page has to look exactly, pixel for pixel, like this reference rendering .

意思就是說,不能只單單看分數是 100 就等於通過測試,出來的樣子還要和 reference 一模一樣,而且動畫還要是順暢的。

暫時為止,據說只有 Webkit 和 Presto 的引擎通過 Acid3 測試。當然,Acid3 只是瀏覽器的其中一面,不足以論成敗。

延伸閱讀: Acid3 receptions and misconceptions and do we have a winner?

不走回頭路

Friday, January 30, 2009

自從 Chrome 過了新屎坑期,聲勢又一下子沉了下來,即使上年尾正式跳出 beta,也不是人人留意。 《數位時代》 上一篇翻譯文章 Google Chrome, Out of Beta. Will That Be Enough? 提到年尾時 Chrome 的市佔率不足 1% ,增長太少太慢,Google 離其「雲端夢」還有很遠。

那 Chrome 在 Google 的「雲端夢」裏,佔多重位置?

Google 的商業模式是網上賣廣告,所以她要令用戶黏著網絡。要增加黏度,除了讓用戶搜尋網頁,還可以處理電郵、文件、日程等等。她們做得非常出色,很多人已轉用一系列的 Google 應用。最終可能一個簡單的 OS 再加一個瀏覽器已足夠所需。

由網頁到網絡應用程式,瀏覽器要作出相應的改變,也是 Chrome 推出時的重點:更快、更穩定、更安全和提供離線運作。Chrome 的確令人眼前一亮,但並不超前其他瀏覽器很多。Opera、Firefox 已有很不錯的速度, Tracemonkeyv8 也可以一拼。離線操作上,各個平台上主流瀏覽器則可以安裝 Gears 來支持。例如即將推出的 Offline Gmail ,也並不一定要使用 Chrome 才能用。

換句話說,即使沒有 Chrome,其他瀏覽器也能完 Google 的「雲端夢」,因為 Google 靠的是「公開」。用的是公開的網頁標準和技術,開發的 Chrome、V8、Gears 都是開源的,這當中沒有甚麼秘密,也沒有甚麼專利技術,人人皆可參與。

第一次瀏覽器大戰,IE 與 Netscape 各自推出專有技術吸引開發者,瀏覽器的市佔率有決定性的影響,結果出現了很多「只限 IE」的網頁。但 IE 不思進取,苦了開發者,所以近年開發都提倡支持標準技術,瀏覽器也以此方向發展。第二次瀏覽器大戰,不會走回頭路,鬥的不是專利技術,而是對公開標準的支持和瀏覽器本身的實用性、效能等等。而無論瀏覽器怎樣死鬥爛鬥,只要是依公開、標準的路線,Google 也會贏,因為用戶對網絡的黏度增加了。Chrome 的市佔率如何,影響也沒有那麼大了。

對 Google 來說,Chrome 仍是重要的,但可能非為「雲端夢」的主角,而是作幕後黑手,「指引」瀏覽器的發展方向,親身示範下一代瀏覽器該如何,才能配上越來越豐富的網絡應用,刺激開發社群走向其「雲端夢」裏。

學習網頁標準之路

Thursday, January 22, 2009

看到 Opera 推出的 Web Standards Curriculum ,裏面有關網頁設計、標準、HTML、CSS、親和力等等的文章共五十多篇,組成一個很完整的教學課程。而很幸運地,Opera 中國團隊有人做 翻譯 ,暫時已譯了十八篇。跟據 A List Apart 最近一篇 談教育的文章裏,Opera 的代表說,雖然多年來大家都大力推行網頁標準,但應用率仍然很低,其一原因可能是缺乏完善的教育。我在想,我那時是怎樣開始接觸 CSS、網頁標準這些東西?

如沒記錯,是由 Eric MeyerComplex Spiral 開始。那時在一本雜誌上看到有關 Firebird (還是 Phoenix?) 的介紹,展示了 Complex Spiral 為例子,所以便到網站去看實際效果如何。在初看到那個 fixed background 和半透明的 hover 時,還以為是用 transparent gif 去做,所以就找 source code 看看。一看就更一頭霧水了:為什麼那幾句 CSS 碼可以做到這個效果啊?那些 CSS selector 在幹甚麼?所以便鑽研起上來了。

幸好那時也開始有不少網上資源可以看,主要都是外國的:展示 CSS 無限可能的 CSS Zen Garden 、充實的 A List Apart 教學、資源豐的 CSS-D wiki 、教我學會 CSS Positioning 的 Brainjar ,當然還有各位 evangelists 的 blog。

至於中文資源,除了看過 hlb 當時翻譯 ALA 一篇 《CSS實務排版技巧、秘訣與技術》 、 和 《深入親和力》 外,其他的則沒甚印象了。我那時也曾厚著面皮《網站建置百寶箱》寫了一些 CSS 相關教學1 ,之後就是在這個 blog 寫的一些 囉唆文章

現在相關的中文資源,上 google 搜尋一下可以找到很多了,有問題大都可以找到答案。加上 Opera 這個課程,學習路應該易走多了吧?

1 相當遠古了,是我在寫 blog 前寫的,用的還是短髮巴特頭像,那時應該是失業中所以有很多時間…

CSS 的 table 排版

Friday, October 24, 2008

最近看到兩篇文章: The Problem with CSSEverything You Know about CSS is wrong ,都是 sitepoint 為新書作宣傳的文章,談的是 CSS 排版的問題。

CSS 排版難學又難精,因為其當初並沒有為排版而設的規則,因此即使要做幾個簡單的 Column,也必需走很遠的路:理解一大堆 CSS 的 Box Model、Positioning、Document Flow 等的運作原理,用很多怪招如 faux column、negative margin 等等去嘗試實作。終於做到效果,卻發覺某某在內容會破壞整個排版,脆弱得很。各大瀏覽器對 CSS 的支持程度不一,要花大量心力處理這些差異。也因為這樣,而催生了 一大堆 CSS Framework ,主要就是想解決排版的問題。

其實對於要弄 grid-like 的排版,有更簡單的古方:HTML table,問題是這個做法並不符合網頁標準網頁標準的精神1,即讓 HTML 標籤能符合語義 (Semantics),而有關外表描述讓 CSS 解決。所以 Table 只應用顯示表列式的資料,用 Table 來排版語義上不對。因此,推行網頁標準,間接要提供 Table 排版以外的方案,但 CSS 排版頗高的學習曲線,某程度上也阻礙了網頁標準的推行。

那麼還有沒有更好的方法,可以順得哥情又不失嫂意?上述文章提到 CSS2 裏的 display: table 類的屬性,即可以用 CSS 指示任何元素表現得像 table 一般,瀏覽器會在實際繪畫時,自動補上 table 元素。這樣的話,用簡單幾句語法就可以實行 Column 排版了。

有人會覺得:實際就是用 table 來排版嘛!這麼多年來叫人不要用 table 排版,現在又叫人用,豈非本末倒置?我想在這裏必需認清的是:用甚麼來做網頁排版才算「正確」?在 CSS3 裏的確有 排版模組 ,但仍然是在起草階段。而在真正可用這些排版屬性前,我們用盡現有 CSS 可行的方法去試去做,所以才有那麼多排版怪招,display:table 只是其中一種方法罷了,難道用 float、negative margin 等才是「正確」?最重要的是有沒有違反網頁標準的精神。使用 display:table,HTML 可以保留語義,CSS 只作外表描述,大概沒有問題吧?

當然,table 也並非完美,例如在第二篇文章中的相集例子裏的 HTML 碼:

HTML:
  1. <div class="grid">
  2.   <div class="row">
  3.     <div class="image">
  4.       <img src="images/photo1.jpg" alt="A Lily" />
  5.       <p>A lily in the gardens of The Vyne Country House</p>
  6.     </div>
  7.     <div class="image">
  8.       <img src="images/photo3.jpg" alt="A Fuchsia plant" />
  9.       <p>Fuchsia plant in my garden</p>
  10.     </div>
  11.   </div>
  12.   <div class="row">
  13.     <div class="image">
  14.       <img src="images/photo2.jpg" alt="A crazy looking Allium flower" />
  15.       <p>A crazy looking flower</p>
  16.     </div>
  17.     <div class="image">
  18.       <img src="images/photo4.jpg" alt="A Robin sitting on a fence" />
  19.       <p>
  20.         This robin has been visiting our garden over the summer.
  21.         He is very friendly and doesn't seem to be too worried about sharing the garden with us.
  22.       </p>
  23.     </div>
  24.   </div>
  25.  </div>

這裏代碼其實跟一個 HTML table 差不多,只不過全都變成了 div。其中 <div class="row"> 究竟是一種只屬外表的架構,還是符合語義的?但如想使用 display:table,這個元素是必需的。 (雖然文章解釋過瀏覽器會自動產生其他 table 元素,但 Safari 上似乎有一些限制)。

雖然可用 display:table,但現時為止卻不是所有瀏覽器都支持,至少仍時是市場上佔大多數的 IE6/7 還未支持。將推出的 IE8 將會更全面支持 CSS2 並 通過 ACID2 ,也會支持 display:table,所以文章作者覺得時機大概成熟,可以試用了?不過要等到大多數用戶都轉成 IE8,大概又要好幾年時間吧?而且還要看 Windows 7 的銷售如何呢?

1 「網頁標準」在這裏的意思傾向於 Wikipedia 所說:In recent years, the term has been more frequently associated with the trend of endorsing a set of standardized best practices for building web sites, and a philosophy of web design and development that includes those methods

HTML5 code demo

Monday, September 29, 2008

這是 Ian Hickson 在 Google 一個有關 HTML5 的演講, 直接打 code 來 demo。部份瀏覽器已在實作這些功能了。對於熟識 HTML 的開發者,應該會看得很興奮。下面是高清版本:

Update: 貼文這段 video 竟然 no longer available… 但這是 Google 自己 host 的啊… 等一下看看會不會再有 update