- From: Kang-Hao (Kenny) Lu <kennyluck@w3.org>
- Date: Thu, 26 Jul 2012 04:15:02 +0800
- To: W3C HTML5 中文興趣小組 <public-html-ig-zh@w3.org>
另外一個跟 'space-*' 有關的問題: 當伸縮盒的空間塞不下內容的時候(容易發生在單行伸縮容器上),'space-*' 的對齊行為應該是怎麼樣子? 目前規範是這樣寫[1]的: # space-between # # 伸缩盒项目会平均地分布在行里。如果最左边的剩余空间是负数,或该行只有 # 一个伸缩盒项目,则该值等效于'flex-start'。在其它情况下,第一个元素的 # 边距边界与行的主起始位置的边界对齐,同时最后一个元素的边距边界与行的 # 主结束位置的边距对齐,而剩余的伸缩盒项目则平均分布,并确保两两之间的 # 空白空间相等。 (這個「最左邊」是翻譯贅字。s/最左邊的//) 我很懷疑在這種情況下,伸縮項目是不是應該互相擠壓(也就是項目之間的間隔是 「負的」),讓兩邊仍然對齊。我做了一個這個行為的演示[2]。大致的優缺點分 析一下: == 互相擠壓的優點 == * 伸縮盒一個常用的使用情節是圖示的排列,有可能圖示在設計的時候左右留了一 些白(如演示上面那種情形),在這種情況下是有一點擠壓的空間的。(反論:未 來可以用 Media Fragement URI 只取沒剩空白的圖片範圍。) * 不擠壓就一定會溢出,溢出是很糟糕的狀況,因為會產生捲動條。(反論:可以 用 'overflow: hidden'。反論的反論: 'overflow: hidden' 可能會對布局造成 副作用) * 互相擠壓的行為不太可能用其他屬性或是 CSS 方法模擬,加入這個行為讓開發 者的可操作性更高一點。(參考下面兩個例子) == 互相擠壓的缺點 == * 圖片重疊的圖示列基本上是不能用的。(反論:假如狀況真的這麼嚴重的話,這 裡還有用 "@media (max-width: xxx) { div { justify-content: flex-start; } }" 轉圜的餘地。) * 不能用 'margin-left/right' 來達到項目之間最小間隔。(反論:仍可以用媒 體查詢達到這個目的。) 綜合分析的話,我是覺得互相擠壓的優點大於缺點,所以規範應該改成: | space-between | | 伸缩盒项目会平均地分布在行里。如果该行只有一个伸缩盒项目,则该值等效 | 于 'flex-start'。在其它情况下,第一个元素的边距边界与行的主起始位置 | 的边界对齐,同时最后一个元素的边距边界与行的主结束位置的边距对齐,而 | 剩余的伸缩盒项目则平均分布,并确保两两之间的空白空间相等。請注意這個 | 空間可能是負的,也就是伸縮項目之間可能會互相擠壓。 (伸縮行裡只有一個項目的話,擠壓還是不可能的,這個特例還跟一個我最近發現 的浮動計算的有趣例子有關,下次分享。) 大家怎麼想? [1] http://www.w3.org/html/ig/zh/wiki/css3-flexbox#justify-content [2] http://lists.w3.org/Archives/Public/www-archive/2012Jul/att-0027/space-between 以上 Kenny
Received on Wednesday, 25 July 2012 20:15:35 UTC