CSS Grid Lanes
(webkit.org)- वेब पर masonry layout लागू करने के लिए नया CSS फीचर Grid Lanes Safari Technology Preview 234 में पेश किया गया है
display: grid-lanesप्रॉपर्टी का उपयोग करके media query के बिना responsive grid बनाया जा सकता है, औरgrid-template-columnsसे लचीले columns परिभाषित किए जा सकते हैंitem-toleranceप्रॉपर्टी के जरिए item placement की sensitivity समायोजित की जा सकती है, जिससे content size के अंतर से होने वाला visual imbalance कम होता है- column direction और row direction दोनों का समर्थन, और
grid-template-columnsयाgrid-template-rowsकी परिभाषा के आधार पर flow अपने-आप तय होता है - CSS Working Group कुछ detail property names पर चर्चा कर रहा है, और WebKit टीम standardization और implementation साथ-साथ आगे बढ़ाते हुए developers को experiment करने के लिए प्रोत्साहित कर रही है
CSS Grid Lanes का अवलोकन
- Grid Lanes वेब पर masonry style layout को native CSS में लागू करने के लिए एक नया display mode है
display: grid-lanesका उपयोग करके इसे मौजूदाgridजैसी syntax के साथ कॉन्फ़िगर किया जा सकता हैgrid-template-columns: repeat(auto-fill, minmax(250px, 1fr))से न्यूनतम 250px चौड़ाई वाले लचीले columns बनाए जा सकते हैं
gapप्रॉपर्टी से items के बीच की दूरी तय की जाती है, और media query के बिना सभी screen sizes को support किया जा सकता है- Safari Technology Preview 234 में प्रयोग संभव है, और WebKit demo page भी उपलब्ध है
Grid Lanes कैसे काम करता है
- browser हर item को अपने-आप सबसे ऊपर के करीब वाले column में रखता है
- Masonry.js की तरह, अगला item मौजूदा सबसे छोटे column में जोड़ा जाता है
- tab navigation के दौरान उपयोगकर्ता इस समय दिख रही content को क्षैतिज दिशा में explore कर सकते हैं
- infinite scroll content loading के समय JavaScript के बिना भी automatic arrangement संभव है
CSS Grid की extended capabilities
- lane size में विविधता:
grid-template-*syntax से संकरे और चौड़े columns को बारी-बारी से रखा जा सकता है- उदाहरण:
grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr) minmax(16rem, 2fr)) minmax(8rem, 1fr)
- उदाहरण:
- item span का समर्थन
- किसी खास item को कई columns में फैलाकर रखा जा सकता है (
grid-column: span 4आदि) - demo उदाहरण: newspaper article style layout
- किसी खास item को कई columns में फैलाकर रखा जा सकता है (
- explicit placement भी संभव
- उदाहरण:
header { grid-column: -3 / -1; }से header को आखिरी columns में स्थिर किया जा सकता है
- उदाहरण:
direction switching फीचर
- column-based (waterfall) और row-based (brick) layout दोनों का समर्थन
grid-template-columnsपरिभाषित होने पर column direction, औरgrid-template-rowsपरिभाषित होने पर row direction अपने-आप सेट हो जाती है
grid-auto-flow: normaldefault value है, और परिभाषित दिशा के अनुसार browser स्वतः निर्णय लेता है- CSS Working Group flow control के लिए properties (
grid-lanes-directionआदि) के naming पर चर्चा कर रहा है- संबंधित चर्चा GitHub CSSWG-drafts issue में चल रही है
placement sensitivity समायोजन: item-tolerance
item-toleranceयह तय करता है कि item placement के समय size difference को कितनी सख्ती से अलग माना जाए- default value
1emहै, और इससे छोटे अंतर को समान height माना जाता है - value जितनी अधिक होगी, items बाएँ-दाएँ कम खिसकेंगे, और value जितनी कम होगी, उतनी सूक्ष्म position adjustment होगी
- default value
- accessibility के लिहाज़ से tab navigation के समय visual jump को कम करने के लिए उचित value सेट करना ज़रूरी है
- property name फिलहाल
item-toleranceहै, लेकिन इसेflow-toleranceयाpack-toleranceमें बदला जा सकता है
प्रयोग और उपयोग के उदाहरण
- Safari Technology Preview 234 में कई demos उपलब्ध हैं
- photo gallery, newspaper-style article, museum site, mega menu layout आदि
- उदाहरण कोड:
.container { display: grid-lanes; grid-template-columns: repeat(auto-fill, minmax(max-content, 24ch)); column-gap: 4lh; } - images के अलावा बहुत सारे links वाले footer या menu structure में भी उपयोगी
आगे की योजना
- CSS Working Group बचे हुए property names तय करने की प्रक्रिया में है
- WebKit टीम 2022 के मध्य से implementation और standardization का काम साथ-साथ चला रही है
- developers को demo बनाने और feedback देने के लिए प्रोत्साहित किया जा रहा है
- Jen Simmons Bluesky और Mastodon के माध्यम से राय एकत्र कर रही हैं
- बुनियादी syntax स्थिर हो चुकी है, इसलिए वास्तविक projects में लागू करने की तैयारी पूरी है
2 टिप्पणियां
तो फिर Safari के लिए Grid-lanes और Firefox के लिए grid अलग-अलग इस्तेमाल करने पड़ेंगे न। कृपया इसे web standard के हिसाब से थोड़ा मेल बिठाइए...
Hacker News की राय
Safari टीम के लिए तालियाँ। अक्टूबर में अचानक Interop 2025 रैंकिंग में सबसे ऊपर पहुँचना वाकई चौंकाने वाला था
उम्मीद है CSS Gap Decorations feature जल्दी आए। flex या grid items के बीच सुंदर borders बनाने के लिए लगातार अनावश्यक hacks इस्तेमाल करते-करते थक गया हूँ
हाल की एक project में Masonry layout इस्तेमाल किया था। performance ठीक है, लेकिन यह absolute positioning पर आधारित होने की वजह से काफी hacky है। object का aspect ratio पहले से पता होना चाहिए, और resize होने पर फिर से गणना करनी पड़ती है। इसलिए native support जल्दी आने की उम्मीद है
ऐसी घोषणाएँ शानदार हैं, लेकिन इनमें tragic comedy जैसा एक पहलू भी है। क्योंकि Apple browser को लगातार update नहीं करता, इसलिए नई features पर वास्तव में भरोसा करके उन्हें इस्तेमाल करने का समय बहुत बाद में आता है
Masonry layout देखने में अच्छा लगता है, लेकिन मुझे लगता है इससे पूरी images को एक नज़र में समझना मुश्किल हो जाता है
समझ नहीं आता कि इसका नाम Masonry क्यों नहीं रखा गया। फिर भी grid-lanes नाम वर्णनात्मक है, इसलिए समझना आसान है
सोच रहा हूँ कि LLM को इस नई CSS syntax को सटीक रूप से सीखने में कितना समय लगेगा
अगर मुझे मनमाने आकार और स्थिति वाले text grid से बनी web page देखनी पड़े, तो उससे अच्छा है कोई मुझे गोली मार दे
अख़बार-शैली grid demo image
व्यक्तिगत रूप से मुझे lane layout पसंद नहीं है। list के सभी elements को क्रम से देखना मुश्किल होता है, और नज़र ऊपर-नीचे उछलती रहती है, जिससे cognitive fatigue बढ़ती है
मुझे लगता है Apple को Safari को सभी platforms पर विश्वसनीय रूप से download के लिए उपलब्ध कराना चाहिए