कृपया टेबल हेडिंग्स को sticky बनाइए
- वेब पर अक्सर बड़े data sets या table layouts देखने को मिलते हैं.
- सैकड़ों rows वाली table में scroll शुरू करते ही समस्या आती है.
- जब table header गायब हो जाता है, तो users के लिए यह याद रखना मुश्किल हो जाता है कि हर column किससे संबंधित है.
fixed header
- fixed header जादू जैसा लगता है, लेकिन इसे implement करना बहुत आसान है.
- बस
thead में दो CSS properties जोड़नी होती हैं:
position: sticky;
top: 0;
- लगभग 96% global support के साथ,
sticky कई browsers में भरोसेमंद तरीके से supported है.
- यह user experience बेहतर बनाने में भी मदद करता है.
GN⁺ की राय
- वेबसाइट पर बड़ी tables के साथ काम करते समय, user scroll नीचे करने पर भी table की heading आसानी से देख सके, यह user experience को काफी बेहतर बनाता है.
- CSS की
position: sticky; property का उपयोग करके table header को आसानी से fixed किया जा सकता है, यह web developers के लिए उपयोगी जानकारी है.
- यह feature व्यापक रूप से supported है, इसलिए web developers जान सकते हैं कि वे इसे अलग-अलग browsers में स्थिर रूप से implement कर सकते हैं.
1 टिप्पणियां
Hacker News की राय
position: sticky;का इस्तेमाल करके table header को fixed करना आसान लग सकता है, लेकिन table content पर कुछ काम करते ही समस्याएँ आती हैं। उदाहरण के लिए, एक feature जोड़ा था जिसमें user table को scroll करके page छोड़ दे और वापस आने पर scroll position restore हो जाए, लेकिन restore की गई position हमेशा एक पंक्ति नीचे खिसक जाती थी। पारदर्शी table header के आर-पार देखने पर इच्छित row सबसे ऊपर होती थी, लेकिन header के overlap होने से अगली row पहली दिखाई देती थी। Header height को ध्यान में रखकर scroll position adjust करने पर शुरुआत में ठीक चलता था, लेकिन कभी-कभी कुछ pixels का mismatch रह जाता था। वजह यह थी कि table बड़ी है, इसलिए scroll events के हिसाब से lazy loading हो रही थी, और auto table layout इस्तेमाल हो रहा था, जिससे कभी-कभी header cells बहुत संकरे हो जाते थे, शब्द wrap हो जाते थे और पूरी header height बढ़ जाती थी। अंतिम समाधान यह था कि header element परResizeObserverबनाया जाए ताकि height बदलने पर scroll position को dynamically adjust किया जा सके। ResizeObserver दस्तावेज़<th>tags इस्तेमाल करने का अतिरिक्त काम कर रहे हैं, तो बहुत संभव है कि वे यही behavior चाहते हों.position: stickyproperty को<thead>और<tr>elements पर इस्तेमाल करने की अनुमति नहीं दी थी: Chromium issue लिंकtopको border को ध्यान में रखकर सेट किया जाए (जैसे -1px की जगह 0), तो table body को header के ऊपर बहने से रोका जा सकता है। दो CodePen examples की तुलना की गई: मूल CodePen और सुधारा हुआ CodePen