- वेबपेज में सेक्शनों के बीच separator जोड़ना content को साफ़ तौर पर व्यवस्थित करने और readability बढ़ाने की एक आम design technique है
border जैसी मौजूदा CSS techniques से separator जोड़े जा सकते हैं, लेकिन size बदलने और अतिरिक्त code की ज़रूरत जैसी सीमाएँ मौजूद हैं
- CSS Gap Decorations
column-rule और row-rule जैसी properties जोड़कर इन समस्याओं का समाधान करता है
मौजूदा CSS separator techniques और उनकी सीमाएँ
border property separator जोड़ने का एक सामान्य तरीका है, लेकिन इसमें ये समस्याएँ हो सकती हैं
border जोड़ने पर element का size बदल सकता है
- पहले और आख़िरी element के लिए अतिरिक्त code लिखना पड़ सकता है
- Flexbox layout में line wrap होने पर separator पूरे क्षेत्र को cover नहीं कर पाता
::before और ::after pseudo-elements का उपयोग करके separator जोड़े जा सकते हैं, लेकिन इनकी भी कुछ सीमाएँ हैं
- पहले और आख़िरी element के लिए अतिरिक्त code की ज़रूरत
- जटिल absolute positioning code की आवश्यकता
- Grid container पर background color लगाकर और items पर background color सेट करके separator जैसा प्रभाव बनाया जा सकता है
- separator की लंबाई समायोजित नहीं की जा सकती
- खाली cell होने पर background color दिखाई देता है
- item अगर cell को पूरा नहीं भरता, तो background color दिखाई देता है
- page background अगर एकल रंग का न हो, तो यह काम नहीं करता
- Multi-column layout में
column-rule property से separator जोड़े जा सकते हैं, लेकिन इसकी भी सीमाएँ हैं
- यह केवल multi-column layout में काम करता है
- content की inline direction को नियंत्रित नहीं किया जा सकता
CSS Gap Decorations प्रस्ताव
- CSS Gap Decorations ऊपर बताई गई समस्याओं को हल करने के लिए एक नया प्रस्ताव है
- मुख्य प्रस्ताव
column-rule property को Grid और Flexbox layout पर भी लागू करने के लिए विस्तार देना
- नई
row-rule property पेश करना
- container के हर हिस्से के लिए अलग separator settings संभव बनाना
row-rule-color property का उपयोग करके separator का रंग बदला जा सकता है
.alternate-red-blue {
display: grid;
grid-template: repeat(auto-fill, 30px) / repeat(6, 100px);
gap: 10px;
row-rule: 1px solid;
row-rule-color: red blue;
}
- अलग-अलग मोटाई और रंग वाले separator सेट किए जा सकते हैं
.varying-widths {
display: grid;
grid-template: repeat(auto-fill, 30px) / repeat(6, 100px);
row-gap: 10px;
row-rule: 5px solid black / repeat(auto, 1px solid #666) / 3px solid black;
}
- intersections पर separator के व्यवहार को नियंत्रित किया जा सकता है
*-rule-break और *-rule-outset properties का उपयोग किया जा सकता है
- intersections पर separator कहाँ शुरू और समाप्त हो, इसे नियंत्रित किया जा सकता है
- separator की लंबाई और offset को बारीकी से समायोजित किया जा सकता है
प्रस्ताव पर feedback का अनुरोध
CSS Gap Decorations प्रस्ताव को developer feedback के आधार पर बेहतर बनाया जाएगा
- अधिक जानकारी official explainer में देखी जा सकती है
- feedback GitHub issue के रूप में submit किया जा सकता है
- खास तौर पर intersections पर separator के व्यवहार को लेकर feedback का स्वागत है
1 टिप्पणियां
Hacker News की राय
मैं एक नया pseudo-element बनाना चाहूँगा: .container:gap { background-color: red; }
committee द्वारा किया गया design हमेशा सबसे अच्छा नहीं होता, लेकिन एक non-native speaker के रूप में मुझे लगता है कि प्रस्तावित property names अपना मतलब ठीक से नहीं बता रहे
अच्छा होगा अगर adjustable panels के use case पर भी विचार किया जाए
border जोड़ने से item का size बदल जाता है, जो शायद वांछनीय नहीं है
दिलचस्प। आजकल मैं QML में ज़्यादातर UI काम कर रहा हूँ, और यह लगभग हर समस्या को कवर करता है
विचार ठीक है, लेकिन यह शायद 10 साल पहले ज़्यादा उपयोगी होता
यह लंबे समय से एक परेशान करने वाली समस्या रही है। अच्छा है कि कोई इस पर कुछ कर रहा है
display: gridनहीं है, क्योंकि यह non-fixed-width elements पर लागू नहीं होताइससे मुझे एक जर्मन डिज़ाइनर की कहावत याद आती है: "जब डिज़ाइनर के पास और कोई विचार नहीं बचता, तो वह कुछ lines जोड़ देता है"
मुझे यह समस्या अक्सर आती है, और मैं
<hr/>से बेहतर तरीका चाहता हूँउम्मीद है यह पास हो जाए... AI का उपयोग करके flexbox के बारे में अपनी अधूरी जानकारी को संभालना एक वरदान रहा है, लेकिन यह किसी असली समाधान जैसा लगता है