三個關於 HTML 規範渲染這章的問題

剛好在翻譯渲染這章的時候注意到了三個規範裡面不甚懂的地方,基本上都是表象
屬性的問題,也就是歷史包袱的問題。

渲染這章定義了兩種預設樣式,一種是使用者代理層樣式(UA stylesheet),一
種是零特異性作者層的表象呈現提示(暫譯)(presentation hint)[1]。這兩種
的差別是中間還有一個使用者層樣式[2]。

[1]
http://www.w3.org/html/ig/zh/wiki/HTML5#CSS_.E4.BD.BF.E7.94.A8.E8.80.85.E4.BB.A3.E7.90.86.E6.A8.A3.E5.BC.8F.E8.A1.A8.E8.88.87.E8.A1.A8.E8.B1.A1.E5.91.88.E7.8F.BE.E6.8F.90.E7.A4.BA
[2] http://www.w3.org/TR/CSS2/cascade.html#cascading-order

(注意,現在版本第十章的編排跟我們翻譯的版本有些差異,大家注意一下。)

== 問題開始 ==
1. 表格那節[3]裡面,@rules 屬性的呈現方式被直接切成兩個部份:border-
color 是使用者代理層,border-style 等等是呈現提示。為什麼要這樣切?這是
不是違反了 CSS2 說 @rules 是表象屬性[4]的部份?現在瀏覽器的實作狀況如何?

[3]
http://www.whatwg.org/specs/web-apps/current-work/multipage/rendering.html#tables
[4] http://www.w3.org/TR/CSS2/cascade.html#preshint

2. 同樣是表格[3]那節,裡面 @border 屬性的預設樣式為:

table[border] > tr > td, table[border] > tr > th,
table[border] > thead > tr > td, table[border] > thead > tr > th,
table[border] > tbody > tr > td, table[border] > tbody > tr > th,
table[border] > tfoot > tr > td, table[border] > tfoot > tr > th {
  border-width: 1px;
}

也就是 border=1 以外都沒有實現,連 border=0。這部份合乎實作嗎?

3. 圖片那節[5]有提到在怪癖模式(quirk mode)下:

@namespace url(http://www.w3.org/1999/xhtml);

img[align=left] { margin-right: 3px; } /* case-insensitive */
img[align=right] { margin-left: 3px; } /* case-insensitive */

為什麼這個部份沒有註明為表象呈現提示,是因為怪癖模式根本沒有使用者層?還
是因為怪癖模式專用的樣式裡面只有這個部份是比較像表象呈現提示所以 索性把
這個部份也放到代理層樣式裡?
(我不覺得這會造成網頁作者多大的影響就是了,一來用使用者樣式的很少,二來
從今以後也不該有人依靠怪癖模式寫網頁了,基本上只是一個理論上的問 題。)

[5]
http://www.whatwg.org/specs/web-apps/current-work/multipage/rendering.html#images-0

此致

Kenny

Received on Monday, 26 September 2011 13:58:31 UTC