Re: CSS3 B&B 規範裡 <position> 兩個取值語法的邏輯描述

2012/3/2 Kang-Hao (Kenny) Lu <kennyluck@w3.org>:
> (12/03/02 19:53), Dean Lee wrote:
>>
>
> 規範存在的意義就是讓實作沒有選擇。話說回來,我一開始就說這只是規範文字問
> 題 A. B. C. D. 的差異只有 if, unless, otherwise 這些字位置的差異而已。
>
>>
>
> CSS2.1 很早就規定[1]瀏覽器處理不合法的數據的邏輯了 — 省略該宣告:
>
>  # Illegal values. User agents must ignore a declaration with an
>  # illegal value.
>
> 不用這個邏輯處理不合法數據的根本不是 CSS。
>
> 我不太懂你說談資是什麼意思,是你覺得瀏覽器應該支援 '10% top' 'bottom
> 90%' 這種現在不合法的語法嗎?如果是的話,我想你可以給規範提這個意見,不
> 過這跟這個 A. B. C. D. 問題並沒有關係,說過了,這個問題只是文字問題。
>
> [1] http://www.w3.org/TR/CSS2/syndata.html#parsing-errors

也就是关于问题 2 的理解和处理。

我个人把 C 看作原文的意译,这种解释让规范的要求一目了然。

“10% right”显然符合 C,初学者也难免望文生义,所以 IE 的 Quirks Mode
确实支持这种写法:
document.getElementsByTagName('body')[0].style.backgroundPosition="bottom 90%"
(等效于
document.getElementsByTagName('body')[0].style.backgroundPositionY="bottom";
document.getElementsByTagName('body')[0].style.backgroundPositionX="90%"; )

可惜这种判断吃力不讨好,只会浪费运算资源,没有支持的价值。

那为什么还要对关键词特别判断,做这样的兼容呢?
我能想到的解释只有这点:说“top-left”的人比说“left-top”的人多——连
5.1 border-radius 的附属元素都叫“border-top-left-radius”[1]
(Google 的结果数也可以参考)。

>
>> 简单地讲,本地化主要为 web developer 提供便利,用 C 版
>> 有助于理解;而原版 *讲清* 何为规范即可。
>
> 我對翻譯規範有興趣跟為 Web Developer 提供便利無關。不過就算照你的邏輯,
> 考慮到中文世界的 Web Develoepr ,尤其是好的 Web Developer 也會看英文規
> 範,這裡英文改得容易理解一點比較好吧。(另外中文書也可能引用原文)
>
>>(越长越容易出现纰漏,如“...one of these...”并未列出全部关键词。)
>
> 你是說 D. 的
>
>  | If two values are given, the first value represents the horizontal
>  | position (or offset) and the second represents the vertical
>  | position (or offset), unless one of these is ‘left’,
>  | ‘right’, ‘top’ or ‘bottom’, in which case see below for
>  | definitions of these keywords.
>
> ? 這是因為後面的那串不需要包括 "center",畢竟 "50% center"、"center
> center" 這種也符合「前面是水平,後面是垂直」。不過後面的關鍵字的描述也有
> 講到 "center" 所以你覺得
>
>  | If two values are given, the first value represents the horizontal
>  | position (or offset) and the second represents the vertical
>  | position (or offset), unless one of these is ‘left’,
>  | ‘right’, ‘top’,‘bottom’ or ‘center’, in which case see
>  | below for definitions of these keywords.
>
> 比較好嗎?還是前面那個段落真的有什麼毛病?
>

段落本身在逻辑上没有毛病。举例言重了,抱歉。
(在实作时,如果将“关键词”作为整体调用,有减轻内存压力的可能。
当然比起后面的判断,还有现今充裕的内存,这种优化可能微不足道。
浏览器开发方都有自己的实现风格,详尽的叙述反而会促进逻辑创新。
读者阅读时,也可能需要跨段比对这组与关键词表才能领悟话中奥妙。)

>
> 此致
>
> Kenny
>

出于中英文一致的考虑,我建议以旁注的形式对原文说法进行解释,
避免增加阅读强度,同时也能服务感兴趣的读者。
原文也很好地规避了问题 2 的困扰(以“存在数值”为判断条件)。

[1] http://dev.w3.org/csswg/css3-background/#border-top-left-radius


Best wishes,
Dean (@xslidian)

Received on Friday, 2 March 2012 14:29:00 UTC