स्क्रोलबार स्टाइल

स्क्रोलबार की स्टाइल बदलने के लिए, scrollbar-width और scrollbar-color प्रॉपर्टी का इस्तेमाल करें.

शुरुआती जानकारी

Chrome के दूसरे वर्शन से, स्क्रोलबार को ::-webkit-scrollbar-* के स्यूडो एलिमेंट की मदद से स्टाइल किया जा सकता है. यह तरीका Chrome और Safari में ठीक से काम करता है, लेकिन इसे सीएसएस वर्किंग ग्रुप ने कभी मानक नहीं किया.

scrollbar-width और scrollbar-color प्रॉपर्टी स्टैंडर्ड की गई हैं, जो सीएसएस स्क्रोलबार स्टाइलिंग मॉड्यूल लेवल 1 की स्पेसिफ़िकेशन का हिस्सा हैं. ये प्रॉपर्टी Chrome 121 के बाद से काम करती हैं.

ब्राउज़र सहायता

  • 121
  • 121
  • 64
  • x

सोर्स

स्क्रोलबार 101

स्क्रोलबार की बनावट

स्क्रोलबार में कम से कम एक ट्रैक और एक अंगूठा होता है. ट्रैक वह हिस्सा है जिसमें अंगूठे को हिलाया जा सकता है. ट्रैक, स्क्रोल करने की पूरी दूरी दिखाता है. अंगूठे से, स्क्रोल किए जा सकने वाले हिस्से में मौजूदा पोज़िशन की जानकारी मिलती है. स्क्रोल करने पर, यह ट्रैक में मूव करता है. अंगूठे को अक्सर खींचा भी जा सकता है.

हालांकि, स्क्रोलबार में अंगूठे और ट्रैक के अलावा और भी हिस्से हो सकते हैं. उदाहरण के लिए, स्क्रोलबार में स्क्रोल ऑफ़सेट को बढ़ाने या कम करने के लिए, एक या उससे ज़्यादा बटन हो सकते हैं. स्क्रोलबार बनाने वाले हिस्से, ऑपरेटिंग सिस्टम के हिसाब से तय होते हैं.

स्क्रोलबार बनाने वाले हिस्सों की इमेज.
स्क्रोलबार बनाने वाले हिस्सों की इमेज. बाईं ओर, एक स्क्रोलबार है. इसमें सिर्फ़ एक ट्रैक और अंगूठे का इस्तेमाल हुआ है. दाईं ओर मौजूद बटन में बटन भी हैं.

क्लासिक और ओवरले स्क्रोलबार

स्क्रोलबार को स्टाइल करने का तरीका जानने से पहले, दो तरह के स्क्रोलबार के बीच के अंतर को समझना ज़रूरी है.

ओवरले स्क्रोलबार

ओवरले स्क्रोलबार, फ़्लोट करने वाले स्क्रोलबार होते हैं. इन्हें नीचे मौजूद कॉन्टेंट के सबसे ऊपर रेंडर किया जाता है. वे डिफ़ॉल्ट रूप से नहीं दिखते. वे सिर्फ़ तब दिखते हैं, जब आप स्क्रोल कर रहे होते हैं. कॉन्टेंट को साफ़ तौर पर दिखाने के लिए, वह अक्सर आधा-पारदर्शी होता है, लेकिन इसका फ़ैसला ऑपरेटिंग सिस्टम पर निर्भर करता है. उनके साथ बातचीत करते समय, उनके आकार में भी अंतर हो सकता है.

ओवरले स्क्रोलबार के साथ ब्राउज़र की इमेज.
ओवरले स्क्रोलबार के साथ ब्राउज़र की इमेज. स्क्रोलबार, कॉन्टेंट को ओवरले करता है. हालांकि, अंगूठा कुछ हद तक पारदर्शी है.

क्लासिक स्क्रोलबार

क्लासिक स्क्रोलबार, स्क्रोलबार होते हैं. इन्हें एक खास स्क्रोलबार गटर में रखा जाता है. स्क्रोलबार गटर, बॉर्डर के अंदरूनी और बाहरी पैडिंग (जगह) के बीच की जगह होती है. ये स्क्रोलबार आम तौर पर ओपेक (पारदर्शी नहीं) होते हैं और पास के कॉन्टेंट से कुछ जगह लेते हैं.

क्लासिक स्क्रोलबार के साथ ब्राउज़र की इमेज.
क्लासिक स्क्रोलबार के साथ ब्राउज़र का इलस्ट्रेशन. स्क्रोलबार, खास जगह पर कॉन्टेंट के बगल में होता है. ओवरले स्क्रोलबार इस्तेमाल करने पर, कॉन्टेंट की चौड़ाई, उपलब्ध चौड़ाई की तुलना में कम हो जाती है.

scrollbar-color और scrollbar-width प्रॉपर्टी

scrollbar-color के साथ स्क्रोलबार को रंग देना

scrollbar-color प्रॉपर्टी की मदद से, स्क्रोलबार की कलर स्कीम बदली जा सकती है. प्रॉपर्टी में <color> की दो वैल्यू इस्तेमाल की जा सकती हैं. पहली <color> वैल्यू से अंगूठे का रंग और दूसरा रंग ट्रैक के लिए इस्तेमाल होता है.

.scroller {
  scrollbar-color: hotpink blue;
}

ओवरले स्क्रोलबार का इस्तेमाल करते समय, डिफ़ॉल्ट रूप से ट्रैक के रंग का कोई असर नहीं पड़ता है. हालांकि, स्क्रोलबार पर कर्सर घुमाने पर, ट्रैक दिखेगा.

डेमो: स्क्रोलबार को स्टाइल करना: scrollbar-color

ऑपरेटिंग सिस्टम से मिली डिफ़ॉल्ट रेंडरिंग का इस्तेमाल करने के लिए, इसकी वैल्यू के तौर पर auto का इस्तेमाल करें.

scrollbar-width की मदद से स्क्रोलबार का साइज़ बदलना

scrollbar-width प्रॉपर्टी की मदद से, स्क्रोलबार को छोटा किया जा सकता है या स्क्रोलबार को पूरी तरह छिपाया जा सकता है. ऐसा करने से, स्क्रोल करने की क्षमता पर असर नहीं पड़ता.

auto, thin, और none वैल्यू स्वीकार की गई हैं.

  • auto: प्लैटफ़ॉर्म से मिली डिफ़ॉल्ट स्क्रोलबार चौड़ाई.
  • thin: प्लैटफ़ॉर्म से मिलने वाला स्क्रोलबार का पतला वैरिएंट या डिफ़ॉल्ट प्लैटफ़ॉर्म स्क्रोलबार की तुलना में, पसंद के मुताबिक स्क्रोलबार पतला करने वाला.
  • none: स्क्रोलबार को असरदार तरीके से छिपाता है. हालांकि, एलिमेंट को अब भी स्क्रोल किया जा सकता है.

scrollbar-width की वैल्यू के तौर पर, 16px जैसे <length> का इस्तेमाल नहीं किया जा सकता.

.scroller {
  scrollbar-width: thin;
}

ओवरले स्क्रोलबार का इस्तेमाल करने पर अंगूठा सिर्फ़ तब दिखता है, जब स्क्रोल किए जा सकने वाले हिस्से को स्क्रोल किया जा रहा हो.

डेमो: स्क्रोलबार को स्टाइल करना: scrollbar-width

ब्राउज़र के पुराने वर्शन के साथ काम करने की सुविधा

ब्राउज़र के जिन वर्शन को scrollbar-color और scrollbar-width के साथ काम नहीं करता उन्हें पूरा करने के लिए, नई scrollbar-* और ::-webkit-scrollbar-* प्रॉपर्टी, दोनों का इस्तेमाल किया जा सकता है.

.scroller {
    --scrollbar-color-thumb: hotpink;
    --scrollbar-color-track: blue;
    --scrollbar-width: thin;
    --scrollbar-width-legacy: 10px;
}

/* Modern browsers with `scrollbar-*` support */
@supports (scrollbar-width: auto) {
    .scroller {
        scrollbar-color: var(--scrollbar-color-thumb) var(--scrollbar-color-track);
        scrollbar-width: var(--scrollbar-width);
    }
}

/* Legacy browsers with `::-webkit-scrollbar-*` support */
@supports selector(::-webkit-scrollbar) {
    .scroller::-webkit-scrollbar-thumb {
        background: var(--scrollbar-color-thumb);
    }
    .scroller::-webkit-scrollbar-track {
        background: var(--scrollbar-color-track);
    }
    .scroller::-webkit-scrollbar {
        max-width: var(--scrollbar-width-legacy);
        max-height: var(--scrollbar-width-legacy);
    }
}
डेमोग्राफ़िक जानकारी: scrollbar-* का इस्तेमाल करके, स्क्रोलबार को ::-webkit-scrollbar-* के फ़ॉलबैक के साथ स्टाइल करना

ध्यान दें कि ::-webkit-scrollbar में से width या height को सेट करने पर, एक ओवरले स्क्रोलबार हमेशा दिखता है. इससे यह क्लासिक स्क्रोलबार बन जाता है.

जादू बनाए रखने के लिए, स्क्रोलर पर कर्सर घुमाते समय ही रंग बदलने का विकल्प चुना जा सकता है.

.scroller::-webkit-scrollbar-thumb {
    background: transparent;
}
.scroller::-webkit-scrollbar-track {
    background: transparent;
}
.scroller:hover::-webkit-scrollbar-thumb {
    background: var(--scrollbar-color-thumb);
}
.scroller:hover::-webkit-scrollbar-track {
    background: var(--scrollbar-color-track);
}

.scroller:hover {
    --fix: ; /* This custom property invalidates styles on hover, thereby enforcing a style recomputation. This is needed to work around a bug in Safari. */
}
डेमोग्राफ़िक जानकारी: scrollbar-* का इस्तेमाल करके, स्क्रोलबार को ::-webkit-scrollbar-* के फ़ॉलबैक के साथ स्टाइल किया जाता है. कर्सर घुमाने पर, सिर्फ़ ::-webkit-scrollbar-* रंग लागू होते हैं