- @stanko/dual-range-input एक native dual range input लाइब्रेरी है जो दो native HTML range inputs का उपयोग करती है।
- Native inputs का उपयोग करके यह सभी default interaction और accessibility फीचर्स को बनाए रखती है।
- यह लगभग 50 lines के JavaScript और CSS से बनी है।
- यह क्यों ज़रूरी है
- इसे generative drawing tool में parameters को adjust करने वाले UI के लिए इस्तेमाल किया गया, जहाँ minimum और maximum sliders की ज़रूरत थी।
- मौजूदा solutions JavaScript पर निर्भर थे और drag तथा accessibility फीचर्स को फिर से implement करते थे।
- Native HTML range inputs का उपयोग करते हुए, track पर click करने पर सबसे नज़दीकी slider को उस value पर जाना चाहिए।
- यह कैसे काम करता है
- दो inputs को साथ-साथ रखा जाता है, और input बदलने पर दोनों values का midpoint calculate किया जाता है।
- minimum और maximum attributes को midpoint पर set किया जाता है, और input की width update की जाती है।
- Input का आकार बदलना
- Input की width calculate करते समय यह ध्यान रखना होता है कि track, actual input width से छोटा होता है।
- इसे सरल तरीके से input की width में thumb width जोड़कर calculate किया जाता है।
- Thumb की अतिरिक्त width को समायोजित करने के लिए input wrapper में padding जोड़ा जाता है।
- Click पर thumb को move करना
- Inputs का आकार इस तरह बदला जाता है कि वे midpoint पर मिलें, और click करने पर सबसे नज़दीकी thumb उस value पर चला जाए।
- Debug mode चालू करने पर midpoint को आसानी से देखा जा सकता है।
- Styling
- CSS का उपयोग करके range inputs को style किया जा सकता है।
- Track और thumb की styling सरल है, और track के बीच के जुड़े हिस्से में border radius हटा दिया जाता है।
- Theme
- Theme को आसानी से बदलने के लिए कई variables expose किए गए हैं।
- Default values दी गई हैं, और variables को override करके theme बनाई जा सकती है।
- Gradient
- CSS gradient का उपयोग करके selected range को paint किया जाता है।
- Gradient सेट करने के लिए
--dri-gradient-position variable का उपयोग किया जाता है, और code में इसे width के साथ update किया जाता है।
- निष्कर्ष
- यह पोस्ट विचारों को व्यवस्थित करने के लिए लिखी गई है, और उम्मीद है कि यह native elements को आज़माने की प्रेरणा देगी।
1 टिप्पणियां
Hacker News राय
<input type=range>में dual value implementation की ज़रूरत है, और Firefox में handle पर क्लिक करने पर value एक step बदल जाने वाला bug है