你不需要基於 CSS Grid 的柵格布局系統
原文地址:You do not need a CSS Grid based Grid System
原文作者:Rachel Andrew 譯者:LeviDing譯文地址:你不需要基於 CSS Grid 的柵格布局系統
你不需要基於 CSS Grid 的柵格布局系統
在過去的幾個星期里,我開始看到基於 CSS Grid 的布局框架和柵格系統的出現。我們驚訝它為什麼出現的這麼晚。但除了使用 CSS Grid 柵格化布局,我至今還沒有看到任何框架能提供其他有價值的東西。他們沉醉於模仿過去的做法,而不是著眼於未來。這使得發展受到限制。其中一個常見的問題就是,這些框架仍需要在標記語言中使用行包裝器。
為什麼 Grid 有些不同?
Grid 是一個柵格系統。它允許你在 CSS 中定義列和行,而不需要在標記語言中定義它們。你不需要其他工具幫助你實現一個看起來像柵格的效果,實際上它就是柵格!
傳統的設置布局的方法需要使用行包裝器進行標記的原因是,我們是通過為對象分配寬度的方式來偽造網格的。然後我們通過調整對象布局,從而在網格間製造出間隙。在一個基於 Float 的網格布局中,你需要將每行元素包裝起來並清除浮動,以使下一行中的內容不浮動。在一個基於 Flex 的網格中,需要你對每行定義新的 Flex 容器,或者你需要恰當靈活地使用包裝器,flex-basis 和 margin 來獲得相同的效果。
Grid 不需要這些行包裝器,因為你已經定義了相應的行軌跡和用於對齊的線條。且不會有網格內的內容溢出到其他行的危險。 如果你定義了行包裝器,那麼每一行都將成為一個新的一維網格布局。如果你將自己限制在一個維度上,那使用 Grid 並沒有比 Flexbox 更好。
基於 Grid 的布局框架有什麼值得借鑒的地方?
框架這個詞在這不是太恰當,但是我認為在一個團隊中,一套 Sass helper 在規範化使用 Grid 方面是很有幫助的。如果你已經探究了相關的規範,你會發現要實現相同效果,會有很多種不同的方法。你可以命名區域,使用行號或行名。你可能傾向於明確給出所有元素的位置,或是儘可能依賴於自動布局。如果團隊中的每個人都使用不同的方法,最終將使得編寫出來的代碼難以閱讀和維護。
對於代碼向後兼容也是如此。如果你已經決定如何處理不支持 Grid 布局的瀏覽器,某些工具可以幫助你確保你所做的決定能夠在不同的地方以相同的效果展現出來。此外,這種方法在項目開發層面上比直接導入其他公司的方法更有用。
在你開始使用新的「Grid Layout 框架」前,請確保你首先了解 Grid 網格布局的工作原理。知道你為什麼要創建一個抽象,它提供什麼以及使用它的副作用是什麼。
擁抱新的可能
我剛剛從 Patterns Day 回來,並且 我的一張幻燈片在 Twitter 上被提及了好幾次:
「Flexbox 與 Grid 有很大區別。如果你先使用了舊的方法來進行開發,那你將失去使用 Flexbox 和 Grid 進行創新的可能」。
上面這張 PPT 的背景是處理老版本的瀏覽器,也就是處理瀏覽器兼容問題。我鼓勵人們首先考慮新的瀏覽器。要開始使用良好的標記, 首先要為那些支持 Grid 和 Flexbox 等的瀏覽器進行設計。如果你從舊版本的瀏覽器開始,會讓他們的性能成為限制你能力的因素。
創建規範的標記,整理那些過時了的沒有必要的元素。使用 Grid 和其他新方法來設計你的網站。然後, 你可以通過提供一些更簡單的東西, 來解決不支持新功能的瀏覽器的兼容問題。也許你的 Grid 布局設計使用了跨行等設計方案,這種效果很難在不支持額外標記方法的舊版本瀏覽器中實現精準的布局。你可以使用 flexbox 做向後兼容,創建一個沒有跨行的布局方案。雖然這樣不那麼整潔,但也完全可以使用,而且不需要為數量在逐漸減少的那部分用戶來增加額外標記。
你可以 點擊這來看相關示例。這是我發布在 Grid by Example 上的數個帶有向後兼容方案的模式之一。
如果把自己限制在過去,例如在舊的瀏覽器中只能使用 Grid 的部分功能,或使用那些自身受限的框架,那你就會失去使用 Grid 時產生創意的可能。既然這樣又何必使用 Grid?你也可以只使用舊的代碼方案,但這的確很可惜。
如果你在尋找柵格框架時找到本文,那你找對地方啦!學習並使用 CSS Grid 布局,可能你沒有必要再找除此之外的材料了。
歡迎大家在評論區留下你的想法和感受!
認為是本文對你有幫助的話點個贊吧??????
-----------------------------------------------------
歡迎大家微信搜索公眾號 LeviDing 訂閱更多精彩內容
推薦閱讀:
※如何高質量完成產品需求開發
※5分鐘搞懂 ES8 非同步函數原理
※這是我做的遊戲,我可以勝任前端工程師么?
※12個前端初學者必學技能
※前端每周清單第9期:向重度jQuery介紹Vue;React Studio 1.0.2、ECharts GL 1.0 alpha、Prettier 1.0發布