<progress>
एलिमेंट की मदद से, ऐसे लोडिंग बार के बारे में खास जानकारी जिसमें रंगों के हिसाब से और आसानी से इस्तेमाल किए जा सकने वाले लोडिंग बार बनाए जा सकते हैं.
इस पोस्ट में, हम चाहते हैं कि आपको रंगों के हिसाब से
रंगों को ऑप्टिमाइज़ करने के तरीके
<progress>
एलिमेंट के साथ ऐक्सेस किया जा सकने वाला लोडिंग बार. इसे आज़माएं
डेमो और
सोर्स!
अगर आपको वीडियो देखना है, तो इस पोस्ट का YouTube वर्शन यहां देखें:
खास जानकारी
कॉन्टेंट बनाने
<progress>
एलिमेंट, ट्रेनिंग पूरी होने के बारे में लोगों को विज़ुअल और ऑडियो जैसे सुझाव देता है. यह
विज़ुअल फ़ीडबैक कई मामलों में काम आता है. जैसे: फ़ॉर्म के ज़रिए प्रोग्रेस,
डाउनलोड या अपलोड करने की जानकारी दिखा रहे हैं या यह भी दिखा रहे हैं कि
अभी कितनी प्रोग्रेस हुई है, इसकी जानकारी नहीं है, लेकिन काम अब भी जारी है.
इस जीयूआई चैलेंज ने इनके साथ काम किया
इस्तेमाल करने में कुछ मेहनत बचाने के लिए, मौजूदा एचटीएमएल <progress>
एलिमेंट का इस्तेमाल करें. कॉन्टेंट बनाने
रंग और लेआउट बिल्ट-इन एलिमेंट को पसंद के मुताबिक बनाने की सीमा को बढ़ाते हैं,
कॉम्पोनेंट को आधुनिक बनाना होगा और उसे डिज़ाइन सिस्टम में बेहतर तरीके से फ़िट करना होगा.
मार्कअप
मैंने <progress>
एलिमेंट को
<label>
इसलिए
मैं एक इंप्लिसिट संबंध के पक्ष में साफ़ संबंध विशेषताओं को छोड़ सकता हूं
संबंध.
मैंने एक ऐसे पैरंट एलिमेंट को भी लेबल किया है जिस पर लोड होने की स्थिति का असर हुआ है, इसलिए स्क्रीन
पाठक की टेक्नोलॉजी, इस जानकारी को उपयोगकर्ता तक वापस पहुंचा सकती है.
<progress></progress>
अगर value
नहीं है, तो इसका मतलब है कि एलिमेंट की प्रोग्रेस है
अनिश्चित होना चाहिए.
max
एट्रिब्यूट की वैल्यू डिफ़ॉल्ट तौर पर 1 होती है. इसलिए, प्रोग्रेस 0 और 1 के बीच होती है. max
सेट किया जा रहा है
उदाहरण के लिए, 100 पर रेंज 0-100 पर सेट हो जाएगी. मैंने शून्य के अंदर रहना चुना
और 1 सीमा के लिए, प्रोग्रेस की वैल्यू का 0.5 या 50% किया जाएगा.
लेबल रैप किए गए प्रगति
इंप्लिसिट संबंध में, प्रोग्रेस एलिमेंट को इस तरह के लेबल से रैप किया जाता है:
<label>Loading progress<progress></progress></label>
अपने डेमो में, मैंने स्क्रीन रीडर के लिए लेबल शामिल करने का विकल्प चुना है
सिर्फ़.
इसके लिए, लेबल टेक्स्ट को <span>
में रैप करें और कुछ स्टाइल लागू करें
किया जा सकता है, ताकि वह प्रभावी ढंग से स्क्रीन से दूर हो जाए:
<label>
<span class="sr-only">Loading progress</span>
<progress></progress>
</label>
WebAIM के साथ जुड़े सीएसएस के साथ:
.sr-only {
clip: rect(1px, 1px, 1px, 1px);
clip-path: inset(50%);
height: 1px;
width: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
}
डेटा लोड होने की प्रोसेस के डेटा का असर, पेज के किसी हिस्से पर पड़ा है
अगर आपकी नज़र सही है, तो प्रोग्रेस इंडिकेटर को जोड़ना आसान हो सकता है
के साथ करते हैं, लेकिन दृष्टि बाधित उपयोगकर्ताओं के लिए, यह
साफ़ तौर पर बताया गया. इसे बेहतर बनाने के लिए,
aria-busy
सबसे ऊपर मौजूद एलिमेंट को एट्रिब्यूट करें, जो लोड होने के बाद बदल जाएगा.
इसके अलावा, प्रोग्रेस और लोडिंग ज़ोन के बीच का संबंध बताएं
के साथ
aria-describedby
.
<main id="loading-zone" aria-busy="true">
…
<progress aria-describedby="loading-zone"></progress>
</main>
JavaScript से, टास्क की शुरुआत में aria-busy
को true
पर सेट करें. इसके बाद,
false
एक बार पूरा हो गया.
Aria एट्रिब्यूट जोड़ना
हालांकि, <progress>
एलिमेंट का इंप्लिसिट रोल यह है
progressbar
, मैंने इसे अश्लील बना दिया है
का उपयोग नहीं कर सकते हैं. मैंने एट्रिब्यूट भी जोड़ दिया है
indeterminate
की मदद से एलिमेंट को अज्ञात स्थिति में रखें, जो कि
एलिमेंट को देखने से ज़्यादा साफ़ होता है कि इसमें कोई value
सेट नहीं है.
<label>
Loading
<progress
indeterminate
role="progressbar"
aria-describedby="loading-zone"
tabindex="-1"
>unknown</progress>
</label>
इस्तेमाल की जाने वाली चीज़ें
tabindex="-1"
प्रोग्रेस एलिमेंट को JavaScript से फ़ोकस करने लायक बनाने के लिए. यह उनके लिए ज़रूरी है
स्क्रीन रीडर टेक्नोलॉजी मिलती है. प्रोग्रेस बदलने के साथ-साथ प्रोग्रेस पर फ़ोकस करने से,
उपयोगकर्ता को यह सूचना देगा कि अपडेट की गई प्रोग्रेस कितनी दूर तक पहुंच गई है.
स्टाइल
स्टाइल के मामले में, प्रोग्रेस एलिमेंट को समझना थोड़ा मुश्किल होता है. बिल्ट-इन एचटीएमएल एलिमेंट में कुछ खास हिस्से छिपे होते हैं, जिन्हें चुनना मुश्किल होता है और अक्सर सेट की जाने वाली प्रॉपर्टी का सिर्फ़ सीमित सेट ऑफ़र करती है.
लेआउट
लेआउट स्टाइल को इस तरह से डिज़ाइन किया गया है कि ज़रूरत पड़ने पर चीज़ों को बेहतर बनाया जा सके एलिमेंट का साइज़ और लेबल की पोज़िशन. एक्सपेरिमेंट पूरा होने की एक खास स्थिति जोड़ी जाती है, जो एक उपयोगी, लेकिन ज़रूरी नहीं, अतिरिक्त विज़ुअल संकेत होना चाहिए.
<progress>
लेआउट
प्रोग्रेस एलिमेंट की चौड़ाई को पूरा नहीं किया गया है, ताकि वह छोटा और बढ़ सके
कम जगह होती है. बिल्ट-इन शैलियों को हटा दिया जाता है
appearance
और border
को none
पर सेट कर रही हूँ. ऐसा इसलिए किया जाता है, ताकि एलिमेंट
यह सभी ब्राउज़र में सामान्य रूप से काम करता है, क्योंकि हर ब्राउज़र की स्टाइल अलग होती है.
एलिमेंट.
progress {
--_track-size: min(10px, 1ex);
--_radius: 1e3px;
/* reset */
appearance: none;
border: none;
position: relative;
height: var(--_track-size);
border-radius: var(--_radius);
overflow: hidden;
}
_radius
के लिए 1e3px
मान वैज्ञानिक संख्या का उपयोग करता है
नोटेशन की मदद से
बड़ी संख्या है, इसलिए border-radius
को हमेशा पूर्णांक बनाया जाता है. यह इसके बराबर है
1000px
. मुझे इसका इस्तेमाल करना पसंद है क्योंकि मेरा लक्ष्य इतनी बड़ी वैल्यू का इस्तेमाल करना है
मैं इसे सेट कर सकता हूं और भूल सकता हूं (और यह लिखने के लिए 1000px
से छोटा है). यह भी है
ज़रूरत पड़ने पर इसे और बड़ा करना आसान है: बस 3 को 4 में बदलें, फिर 1e4px
10000px
के बराबर है.
overflow: hidden
का इस्तेमाल किया जा रहा है और यह काफ़ी मज़ेदार रहा है. इससे कुछ
इससे बहुत आसानी होती है, जैसे कि border-radius
वैल्यू को
फ़िल एलिमेंट को ट्रैक करना और ट्रैक करना; साथ ही, इससे उनकी प्रोग्रेस पर कोई असर नहीं पड़ा
एलिमेंट के बाहर रह सकता है. पसंद के मुताबिक बनाई गई इस प्रोग्रेस पर एक और दोहराना
एलिमेंट को overflow: hidden
के बिना किया जा सकता है और यह कुछ
ऐनिमेशन या बेहतर पूरा होने की स्थितियों के लिए अवसर.
प्रोसेस पूर्ण
सीएसएस सिलेक्टर यहां ज़्यादा से ज़्यादा वैल्यू की तुलना करके मुश्किल काम करते हैं. अगर ये मैच होते हैं, तो प्रोग्रेस पूरी हो जाती है. पूरा होने पर, एक सूडो-एलिमेंट जनरेट होता है और उसे प्रोग्रेस एलिमेंट के आखिर में जोड़ दिया जाता है. इससे, पूरा होने के लिए एक अच्छा अतिरिक्त विज़ुअल संकेत मिलता है.
progress:not([max])[value="1"]::before,
progress[max="100"][value="100"]::before {
content: "✓";
position: absolute;
inset-block: 0;
inset-inline: auto 0;
display: flex;
align-items: center;
padding-inline-end: max(calc(var(--_track-size) / 4), 3px);
color: white;
font-size: calc(var(--_track-size) / 1.25);
}
रंग
ब्राउज़र, प्रोग्रेस एलिमेंट के लिए अपने अलग रंग दिखाता है और इस तरह से काम करता है हल्के और गहरे रंग वाली थीम में सिर्फ़ एक सीएसएस प्रॉपर्टी इस्तेमाल करें. इसे बनाने के लिए कुछ ब्राउज़र के हिसाब से खास सिलेक्टर को चुनने की सुविधा मिलती है.
हल्के और गहरे रंग वाले ब्राउज़र की स्टाइल
अपनी साइट को गहरे और हल्के रंग के अडैप्टिव <progress>
एलिमेंट में दिखाने के लिए,
सिर्फ़ color-scheme
की ज़रूरत है.
progress {
color-scheme: light dark;
}
एक प्रॉपर्टी की प्रोग्रेस के लिए भरा गया रंग
<progress>
एलिमेंट की रंगत बदलने के लिए, accent-color
का इस्तेमाल करें.
progress {
accent-color: rebeccapurple;
}
ध्यान दें कि ट्रैक के बैकग्राउंड का रंग, हल्के से गहरे रंग में बदलता है. यह रंग, बैकग्राउंड के हिसाब से
accent-color
. ब्राउज़र उचित कंट्रास्ट सुनिश्चित कर रहा है: बहुत व्यवस्थित.
पूरी तरह से पसंद के मुताबिक हल्के और गहरे रंग
<progress>
एलिमेंट पर दो कस्टम प्रॉपर्टी सेट करें. पहली, ट्रैक के रंग के लिए है
और दूसरा रंग, ट्रैक की प्रोग्रेस के रंग के लिए.
prefers-color-scheme
मीडिया क्वेरी, ट्रैक और ट्रैक प्रगति के लिए नए रंग मान प्रदान करें.
progress {
--_track: hsl(228 100% 90%);
--_progress: hsl(228 100% 50%);
}
@media (prefers-color-scheme: dark) {
progress {
--_track: hsl(228 20% 30%);
--_progress: hsl(228 100% 75%);
}
}
फ़ोकस स्टाइल
पहले हमने एलिमेंट को नेगेटिव टैब इंडेक्स दिया था, ताकि उसे प्रोग्राम के हिसाब से बनाया जा सके
फ़ोकस्ड. इस्तेमाल की जाने वाली चीज़ें
:focus-visible
से
फ़ोकस को स्मार्ट फ़ोकस रिंग स्टाइल में ऑप्ट इन करने के लिए कस्टमाइज़ कर सकते हैं. इसके साथ ही,
क्लिक करने और फ़ोकस करने पर फ़ोकस रिंग नहीं दिखाई देगी, लेकिन कीबोर्ड क्लिक करने पर सूचना दिखेगी. कॉन्टेंट बनाने
YouTube वीडियो में, इस बारे में ज़्यादा विस्तार से बात की गई है और
की समीक्षा करनी चाहिए.
progress:focus-visible {
outline-color: var(--_progress);
outline-offset: 5px;
}
सभी ब्राउज़र पर पसंद के मुताबिक स्टाइल
<progress>
एलिमेंट के हर हिस्से को चुनकर, स्टाइल को पसंद के मुताबिक बनाएं
ब्राउज़र दिखाता है. प्रोग्रेस एलिमेंट का इस्तेमाल एक टैग है, लेकिन यह
कुछ चाइल्ड एलिमेंट जो सीएसएस स्यूडो सिलेक्टर के ज़रिए दिखते हैं. Chrome DevTools
सेटिंग चालू करने पर, आपको ये एलिमेंट दिखेंगे:
- DevTools देखने के लिए, अपने पेज पर राइट क्लिक करें और एलिमेंट की जांच करें चुनें.
- DevTools विंडो के सबसे ऊपर दाएं कोने में मौजूद, सेटिंग गियर पर क्लिक करें.
- Elements शीर्षक में, उपयोगकर्ता एजेंट की शैडो दिखाएं और चालू करें DOM चेकबॉक्स होता है.
Safari और Chromium की स्टाइल
Safari और Chromium जैसे WebKit-आधारित ब्राउज़र
::-webkit-progress-bar
और ::-webkit-progress-value
, जो इसके सबसेट को अनुमति देते हैं
सीएसएस का इस्तेमाल किया जाना चाहिए. फ़िलहाल, कस्टम प्रॉपर्टी का इस्तेमाल करके background-color
को सेट करें
जो पहले बनाए जाते थे. ये रोशनी और अंधेरे के हिसाब से ढल जाते हैं.
/* Safari/Chromium */
progress[value]::-webkit-progress-bar {
background-color: var(--_track);
}
progress[value]::-webkit-progress-value {
background-color: var(--_progress);
}
Firefox की स्टाइल
Firefox सिर्फ़ ::-moz-progress-bar
स्यूडो सिलेक्टर को
<progress>
एलिमेंट. इसका मतलब यह भी है कि हम ट्रैक को सीधे तौर पर रंग नहीं सकते.
/* Firefox */
progress[value]::-moz-progress-bar {
background-color: var(--_progress);
}
ध्यान दें कि iOS Safari के दौरान Firefox में accent-color
से ट्रैक रंग सेट किया गया है
हल्के नीले रंग का ट्रैक है. गहरे रंग वाले मोड में भी ऐसा ही है: Firefox में गहरे रंग वाला ट्रैक दिखता है, लेकिन
वह कस्टम रंग नहीं है जो हमने सेट किया है, और यह Webkit-आधारित ब्राउज़र में काम करता है.
ऐनिमेशन
ब्राउज़र में पहले से मौजूद सूडो सिलेक्टर के साथ काम करते समय, अक्सर यह सीमित अनुमति वाली सीएसएस प्रॉपर्टी का सेट.
ऐनिमेशन के ज़रिए ट्रैक भरा जा रहा है
में से inline-size
प्रोग्रेस एलिमेंट Chromium के लिए काम करता है, लेकिन Safari के लिए नहीं. Firefox यह भी करता है
के ::-moz-progress-bar
पर ट्रांज़िशन प्रॉपर्टी का इस्तेमाल न करें.
/* Chromium Only 😢 */
progress[value]::-webkit-progress-value {
background-color: var(--_progress);
transition: inline-size .25s ease-out;
}
:indeterminate
स्थिति को ऐनिमेट किया जा रहा है
यहां मुझे थोड़ा और क्रिएटिव मिलेगा, ताकि मैं ऐनिमेशन उपलब्ध करा सकूं. नकली एलिमेंट को बनाया जाता है और एक ग्रेडिएंट लागू किया जाता है, जिसे वापस ऐनिमेट किया जाता है और सभी तीन ब्राउज़र के लिए.
कस्टम प्रॉपर्टी
कस्टम प्रॉपर्टी कई चीज़ों के लिए बेहतरीन होती हैं, लेकिन मेरी पसंदीदा प्रॉपर्टी में से एक है
किसी दूसरी जादुई दिखने वाली सीएसएस वैल्यू को एक नाम देकर. आपको फ़ॉलो करना काफ़ी
जटिल
linear-gradient
लेकिन एक अच्छे नाम से. इसके मकसद और इस्तेमाल के उदाहरणों को साफ़ तौर पर समझा जा सकता है.
progress {
--_indeterminate-track: linear-gradient(to right,
var(--_track) 45%,
var(--_progress) 0%,
var(--_progress) 55%,
var(--_track) 0%
);
--_indeterminate-track-size: 225% 100%;
--_indeterminate-track-animation: progress-loading 2s infinite ease;
}
कस्टम प्रॉपर्टी भी कोड को DRY में रहने में सहायता करेंगी, क्योंकि हम दोबारा नहीं इन ब्राउज़र खास सिलेक्टर को एक साथ ग्रुप करें.
कीफ़्रेम
इसका मकसद लगातार चलने वाला एक ऐनिमेशन है. शुरुआत और आखिर में
कीफ़्रेम सीएसएस में सेट किए जाएंगे. सिर्फ़ एक कीफ़्रेम की ज़रूरत है, बीच वाला कीफ़्रेम
50%
पर, एक ऐसा ऐनिमेशन बनाने के लिए जो वापस वहीं से शुरू हुआ जहां से शुरू हुआ था.
फिर से!
@keyframes progress-loading {
50% {
background-position: left;
}
}
हर ब्राउज़र को टारगेट किया जा रहा है
हर ब्राउज़र, <progress>
पर नकली एलिमेंट बनाने की अनुमति नहीं देता
या प्रोग्रेस बार को ऐनिमेट करने की अनुमति देता है. अन्य ब्राउज़र भी काम करते हैं
स्यूडो-एलिमेंट के बजाय ट्रैक को ऐनिमेट करता हूँ, इसलिए मैं स्यूडो-एलिमेंट से इस रूप में अपग्रेड करता हूँ
और ऐनिमेशन वाले बार में बदल सकते हैं.
Chromium का pseudo-element
Chromium, स्यूडो-एलिमेंट की अनुमति देता है: ::after
को कवर करने की पोज़िशन के साथ इस्तेमाल किया जाता है
की मदद से पा सकते हैं. अनिश्चित कस्टम प्रॉपर्टी का इस्तेमाल किया जाता है और
आगे होने वाला ऐनिमेशन बहुत अच्छा काम करता है.
progress:indeterminate::after {
content: "";
inset: 0;
position: absolute;
background: var(--_indeterminate-track);
background-size: var(--_indeterminate-track-size);
background-position: right;
animation: var(--_indeterminate-track-animation);
}
Safari प्रोग्रेस बार
Safari के लिए, कस्टम प्रॉपर्टी और एक ऐनिमेशन सूडो-एलिमेंट प्रोग्रेस बार:
progress:indeterminate::-webkit-progress-bar {
background: var(--_indeterminate-track);
background-size: var(--_indeterminate-track-size);
background-position: right;
animation: var(--_indeterminate-track-animation);
}
Firefox का प्रोग्रेस बार
Firefox के लिए, कस्टम प्रॉपर्टी और एक ऐनिमेशन सूडो-एलिमेंट प्रोग्रेस बार:
progress:indeterminate::-moz-progress-bar {
background: var(--_indeterminate-track);
background-size: var(--_indeterminate-track-size);
background-position: right;
animation: var(--_indeterminate-track-animation);
}
JavaScript
<progress>
एलिमेंट के साथ JavaScript की अहम भूमिका होती है. यह कंट्रोल करता है
वह वैल्यू जो एलिमेंट को भेजी जाती है. इससे यह पक्का होता है कि एलिमेंट में ज़रूरत के मुताबिक जानकारी
दस्तावेज़ तैयार करता है.
const state = {
val: null
}
डेमो में, गेम की प्रोग्रेस को कंट्रोल करने के बटन मौजूद होते हैं; वे state.val
को अपडेट करते हैं
और फिर फ़ंक्शन को अपडेट करने के लिए
DOM.
document.querySelector('#complete').addEventListener('click', e => {
state.val = 1
setProgress()
})
setProgress()
इस फ़ंक्शन में यूज़र इंटरफ़ेस (यूआई)/UX मैनेज करता है. शुरू करने के लिए,
setProgress()
फ़ंक्शन का इस्तेमाल करना होगा. किसी पैरामीटर की ज़रूरत नहीं है, क्योंकि इसके पास
state
ऑब्जेक्ट, प्रोग्रेस एलिमेंट, और <main>
ज़ोन.
const setProgress = () => {
}
<main>
ज़ोन पर लोड होने का स्टेटस सेट किया जा रहा है
प्रोग्रेस पूरी हुई है या नहीं, इसके आधार पर मिलते-जुलते <main>
एलिमेंट को
aria-busy
विशेषता:
const setProgress = () => {
zone.setAttribute('aria-busy', state.val < 1)
}
अगर लोड होने की रकम की जानकारी नहीं है, तो एट्रिब्यूट हटाएं
अगर वैल्यू की जानकारी नहीं है या इसे सेट नहीं किया गया है, तो इस इस्तेमाल में null
, value
को हटाएं और
aria-valuenow
एट्रिब्यूट. इससे <progress>
अनिश्चित हो जाएगा.
const setProgress = () => {
zone.setAttribute('aria-busy', state.val < 1)
if (state.val === null) {
progress.removeAttribute('aria-valuenow')
progress.removeAttribute('value')
progress.focus()
return
}
}
JavaScript दशमलव की गणित से जुड़ी समस्याएं ठीक करना
मैंने गतिविधि की डिफ़ॉल्ट ज़्यादा से ज़्यादा सीमा 1 के साथ बने रहने का विकल्प चुना है, इसलिए डेमो
वृद्धि और कमी फ़ंक्शन दशमलव गणित का उपयोग करते हैं. JavaScript और अन्य
यही हमेशा अच्छी नहीं होती
उस को चुनें.
यहां एक roundDecimals()
फ़ंक्शन दिया गया है, जिसकी मदद से गणित की गणना कम हो जाएगी
नतीजा:
const roundDecimals = (val, places) =>
+(Math.round(val + "e+" + places) + "e-" + places)
वैल्यू को पूर्णांक में बदलें, ताकि उसे दिखाया जा सके और वह आसानी से पढ़ा जा सके:
const setProgress = () => {
zone.setAttribute('aria-busy', state.val < 1)
if (state.val === null) {
progress.removeAttribute('aria-valuenow')
progress.removeAttribute('value')
progress.focus()
return
}
const val = roundDecimals(state.val, 2)
const valPercent = val * 100 + "%"
}
स्क्रीन रीडर और ब्राउज़र की स्थिति के लिए वैल्यू सेट करें
वैल्यू का इस्तेमाल, डीओएम में तीन जगहों पर किया जाता है:
<progress>
एलिमेंट काvalue
एट्रिब्यूट.aria-valuenow
एट्रिब्यूट.<progress>
के अंदर का टेक्स्ट कॉन्टेंट.
const setProgress = () => {
zone.setAttribute('aria-busy', state.val < 1)
if (state.val === null) {
progress.removeAttribute('aria-valuenow')
progress.removeAttribute('value')
progress.focus()
return
}
const val = roundDecimals(state.val, 2)
const valPercent = val * 100 + "%"
progress.value = val
progress.setAttribute('aria-valuenow', valPercent)
progress.innerText = valPercent
}
प्रोग्रेस पर फ़ोकस करना
वैल्यू अपडेट होने के बाद, उन लोगों को गेम की प्रोग्रेस में बदलाव दिखेगा. हालांकि, स्क्रीन पर यह बदलाव दिखेगा
पाठक को फ़िलहाल इस बदलाव के बारे में नहीं बताया गया है. फ़ोकस
<progress>
एलिमेंट और ब्राउज़र अपडेट की सूचना देगा!
const setProgress = () => {
zone.setAttribute('aria-busy', state.val < 1)
if (state.val === null) {
progress.removeAttribute('aria-valuenow')
progress.removeAttribute('value')
progress.focus()
return
}
const val = roundDecimals(state.val, 2)
const valPercent = val * 100 + "%"
progress.value = val
progress.setAttribute('aria-valuenow', valPercent)
progress.innerText = valPercent
progress.focus()
}
नतीजा
अब जब आपको पता है कि मैंने इसे कैसे किया, तो आप कैसे करेंगे ‽ 🙂
अगर आपको दूसरा मौका मिले, तो मैं निश्चित तौर पर कुछ बदलाव करना चाहूंगी. मुझे लगता है कि मौजूदा कॉम्पोनेंट को साफ़ करने के लिए जगह है. साथ ही, <progress>
एलिमेंट की pseudo-class स्टाइल की सीमाओं के बिना, एक नया कॉम्पोनेंट बनाने की कोशिश की जा सकती है. इसे एक्सप्लोर करना फ़ायदेमंद होगा!
आइए, हम अलग-अलग तरह के काम करते हैं और वेब पर काम करने के सभी तरीके सीखते हैं.
एक डेमो बनाएं, मुझे ट्वीट करें और मैं इसे जोड़ दूंगा कम्यूनिटी रीमिक्स बनाने के लिए यहां दिए गए सेक्शन पर जाएं!