開源瀏覽器引擎WebKit團隊提出CSS Grid Lanes,試圖把長期依賴JavaScript函式庫才能穩定完成的瀑布流(Waterfall)排版配置,放進瀏覽器原生的CSS版面配置能力之中。該設計以新增的display:grid-lanes為入口,讓開發者沿用既有CSS Grid的軌道(Grid Track)定義語法來描述欄或列,再交由瀏覽器負責自動放置不同高度的內容項目。目前功能已可在Apple Safari技術預覽234版進行測試。

WebKit在說明中將Grid Lanes定位為瀑布流的下一步,並提到這套做法以Mozilla與WebKit之前的投入作為基礎,同時也經過CSS工作小組與各家瀏覽器多輪討論後,逐步收斂出較明確的運作方式。

W3C發布CSS Grid Layout Module Level 3工作草案,文件把grid-lanes與inline-grid-lanes納入display屬性的新值,並定義Grid Lanes的版面配置模型與相關行為。

WebKit特別把可用性與可存取性納入討論,由於傳統瀑布流常見的問題是視覺順序與鍵盤導覽順序不一致,使用者按Tab時可能一路走到第一欄底部,才跳回第二欄頂端,閱讀與操作感受不連續。Grid Lanes的目標是在保留瀑布流排版視覺密度的同時,讓使用者能更自然地以鍵盤在目前可見內容之間移動,也降低過去為了量測內容高度與決定放置位置而必須用JavaScript介入排版的需求。

為了減少瀑布流因微小高度差而頻繁換欄,造成視覺跳動與導覽上的困惑,WebKit提出item-tolerance,讓瀏覽器在選擇下一個項目落點時,把高度差距小到一定程度的候選欄位視為同一級距,避免因細微差異而做出讓人意外的換欄決策。這個屬性在規格與Safari技術預覽234版目前採用item-tolerance命名,且預設以1 em作為判斷接近程度的基準,但WebKit也提醒名稱仍可能調整。

W3C的工作草案也討論了相容性上的自然降級。文件範例指出,作者可先宣告display:grid再宣告display:grid-lanes,在不支援Grid Lanes的使用者代理程式中,後者會被忽略,版面仍會以一般Grid呈現,只是可能出現較多垂直方向空隙。該寫法讓團隊能以較低風險方式,在支援環境中逐步啟用新能力,同時保留可接受的降級呈現。

現階段Grid Lanes仍處於工作草案與技術預覽版可測的階段,細節包含命名與部分行為仍可能調整。

熱門新聞

Advertisement