<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>CSS on kenji.blog</title><link>http://kenji.blog/hi/categories/css/</link><description>Recent content in CSS on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>hi</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 12 Sep 2026 12:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/hi/categories/css/index.xml" rel="self" type="application/rss+xml"/><item><title>ब्लॉग के डार्क मोड सपोर्ट में CSS डिज़ाइन के महत्वपूर्ण बिंदु</title><link>http://kenji.blog/hi/p/dark-mode-css-design-patterns/</link><pubDate>Sat, 12 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/hi/p/dark-mode-css-design-patterns/</guid><description>&lt;img src="http://kenji.blog/p/dark-mode-css-design-patterns/img/eyecatch.jpg" alt="Featured image of post ब्लॉग के डार्क मोड सपोर्ट में CSS डिज़ाइन के महत्वपूर्ण बिंदु" />&lt;p>आधुनिक वेब विकास में, डार्क मोड (Dark Mode) का सपोर्ट केवल एक &amp;ldquo;सुखद सुविधा (Nice to have)&amp;rdquo; से बदलकर उपयोगकर्ता अनुभव (UX) को बेहतर बनाने के लिए एक &amp;ldquo;अनिवार्य आवश्यकता (Must have)&amp;rdquo; बन गया है। विशेष रूप से ब्लॉग या दस्तावेज़ साइटों जैसे मीडिया के लिए जहाँ लंबे समय तक पाठ पढ़ने की अपेक्षा की जाती है, डार्क मोड सपोर्ट का महत्व बहुत अधिक है क्योंकि यह उपयोगकर्ताओं की आँखों की थकान को कम करता है और डिवाइस की बैटरी खपत को बचाता है।&lt;/p>
&lt;p>इस लेख में, हम एक फ्रंटएंड इंजीनियर के दृष्टिकोण से ब्लॉग के डार्क मोड सपोर्ट में आने वाली तकनीकी चुनौतियों और अत्यधिक बनाए रखने योग्य CSS डिज़ाइन के प्रमुख बिंदुओं पर बहुत गहराई से चर्चा करेंगे। हम CSS कस्टम प्रॉपर्टीज़ (CSS वेरिएबल्स) के उपयोग, FOUC (Flash of Unstyled Content) को रोकने के लिए उन्नत जावास्क्रिप्ट नियंत्रण और SSR एकीकरण, एक्सेसिबिलिटी (WCAG 2.1 AAA) सुनिश्चित करने के लिए रंग डिज़ाइन (RGB, HSL, और नवीनतम OKLCH), और Tailwind CSS का उपयोग करके व्यावहारिक कोड उदाहरणों सहित डार्क मोड कार्यान्वयन की हर चीज़ को कवर करेंगे।&lt;/p>
&lt;hr>
&lt;h2 id="1-css-custom-properties-css-वरएबलस-क-मधयम-स-थम-डजइन-क-मल-सदधत">1. CSS Custom Properties (CSS वेरिएबल्स) के माध्यम से थीम डिज़ाइन के मूल सिद्धांत
&lt;/h2>&lt;p>वर्तमान में डार्क मोड को लागू करने का सबसे मानक और शक्तिशाली तरीका &lt;strong>CSS Custom Properties (CSS वेरिएबल्स)&lt;/strong> का उपयोग करना है। जबकि Sass जैसे CSS प्रीप्रोसेसर के चर (&lt;code>$color&lt;/code>) संकलन समय (compile time) पर स्थिर रूप से हल किए जाते हैं, CSS वेरिएबल्स गतिशील रूप से हल किए जाते हैं और ब्राउज़र के रनटाइम में ओवरराइट किए जाते हैं। यह केवल जावास्क्रिप्ट से क्लास को स्विच करके तुरंत पूरे पेज की रंग योजना को बदलना संभव बनाता है।&lt;/p>
&lt;h3 id="11-बनयद-कलर-थम-क-परभषत-करन">1.1 बुनियादी कलर थीम को परिभाषित करना
&lt;/h3>&lt;p>सबसे पहले, लाइट मोड (डिफ़ॉल्ट) के कलर पैलेट को परिभाषित करने के लिए &lt;code>:root&lt;/code> स्यूडो-क्लास का उपयोग करें। फिर, एक सामान्य डिज़ाइन पैटर्न यह है कि जब &lt;code>[data-theme='dark']&lt;/code> (या &lt;code>.dark&lt;/code> क्लास) जैसा कोई एट्रिब्यूट लागू होता है, तो उन वेरिएबल्स को ओवरराइट किया जाता है।&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-css" data-lang="css">&lt;span class="line">&lt;span class="cl">&lt;span class="c">/* लाइट मोड (डिफ़ॉल्ट) वेरिएबल परिभाषाएँ */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">:&lt;/span>&lt;span class="nd">root&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-bg-primary&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#ffffff&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-bg-secondary&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#f3f4f6&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-text-primary&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#111827&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-text-secondary&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#4b5563&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-accent&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#3b82f6&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-border&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#e5e7eb&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">/* डार्क मोड में वेरिएबल्स को ओवरराइट करना */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>&lt;span class="nt">data-theme&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;dark&amp;#39;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-bg-primary&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#111827&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-bg-secondary&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#1f2937&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-text-primary&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#f9fafb&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-text-secondary&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#9ca3af&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-accent&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#60a5fa&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-border&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#374151&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">/* वास्तविक अनुप्रयोग */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">body&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">background-color&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nf">var&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">--&lt;/span>&lt;span class="kc">color&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">bg&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">primary&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">color&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nf">var&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">--&lt;/span>&lt;span class="kc">color&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="kc">text&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">primary&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">transition&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="k">background-color&lt;/span> &lt;span class="mf">0.3&lt;/span>&lt;span class="kt">s&lt;/span> &lt;span class="kc">ease&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kc">color&lt;/span> &lt;span class="mf">0.3&lt;/span>&lt;span class="kt">s&lt;/span> &lt;span class="kc">ease&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">a&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">color&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nf">var&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">--&lt;/span>&lt;span class="kc">color&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">accent&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>इस तरह से लेआउट और टाइपोग्राफी के विनिर्देशन को रंग (थीम) के विनिर्देशन से पूरी तरह अलग करने से CSS की मेंटेनबिलिटी (रखरखाव क्षमता) में भारी सुधार होता है।&lt;/p>
&lt;h3 id="12-media-prefers-color-scheme-dark-क-उपयग">1.2 @media (prefers-color-scheme: dark) का उपयोग
&lt;/h3>&lt;p>जब OS स्तर पर डार्क मोड सेट होता है, तो UX के दृष्टिकोण से यह वांछनीय है कि उपयोगकर्ता के पहली बार वेबसाइट पर आते ही स्वचालित रूप से डार्क थीम लागू हो जाए। इसे &lt;code>@media (prefers-color-scheme: dark)&lt;/code> नामक मीडिया क्वेरी का उपयोग करके प्राप्त किया जा सकता है।&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-css" data-lang="css">&lt;span class="line">&lt;span class="cl">&lt;span class="c">/* जब OS पर्यावरण सेटिंग डार्क मोड में हो तो फ़ॉलबैक */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">@&lt;/span>&lt;span class="k">media&lt;/span> &lt;span class="o">(&lt;/span>&lt;span class="nt">prefers-color-scheme&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="nt">dark&lt;/span>&lt;span class="o">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">:&lt;/span>&lt;span class="nd">root&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nd">not&lt;/span>&lt;span class="o">([&lt;/span>&lt;span class="nt">data-theme&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;light&amp;#39;&lt;/span>&lt;span class="o">])&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-bg-primary&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#111827&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-bg-secondary&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#1f2937&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-text-primary&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#f9fafb&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-text-secondary&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#9ca3af&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-accent&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#60a5fa&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--color-border&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#374151&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>इस नोटेशन के साथ, जब तक उपयोगकर्ता स्पष्ट रूप से लाइट मोड (&lt;code>data-theme='light'&lt;/code>) नहीं चुनता, तब तक OS की डार्क मोड सेटिंग का सम्मान किया जाता है और वेरिएबल्स को ओवरराइट किया जाता है।&lt;/p>
&lt;hr>
&lt;h2 id="2-कलर-सपस-क-समझन-और-एकससबलट-wcag-21-aaa">2. कलर स्पेस को समझना और एक्सेसिबिलिटी (WCAG 2.1 AAA)
&lt;/h2>&lt;p>डार्क मोड के लिए रंग डिज़ाइन करते समय, बस &amp;ldquo;बैकग्राउंड को काला करना और टेक्स्ट को सफेद करना&amp;rdquo; पर्याप्त नहीं है। यदि कंट्रास्ट बहुत अधिक है, तो यह चमक (हलेशन) पैदा कर सकता है और इसे पढ़ना कठिन बना सकता है; यदि कंट्रास्ट बहुत कम है, तो दृश्यता से समझौता किया जाता है। वेब कंटेंट एक्सेसिबिलिटी गाइडलाइंस (WCAG) दृश्यता सुनिश्चित करने के लिए कंट्रास्ट अनुपात को सख्ती से परिभाषित करती हैं।&lt;/p>
&lt;h3 id="21-wcag-कटरसट-अनपत-गणन-सतर">2.1 WCAG कंट्रास्ट अनुपात गणना सूत्र
&lt;/h3>&lt;p>WCAG में कंट्रास्ट अनुपात (Contrast Ratio) $CR$ को पृष्ठभूमि रंग और अग्रभूमि रंग की सापेक्ष चमक (Relative Luminance) का उपयोग करके निम्नानुसार परिभाषित किया गया है।&lt;/p>
$$CR = \frac{L_{lighter} + 0.05}{L_{darker} + 0.05}$$&lt;p>जहाँ, $L_{lighter}$ हल्के रंग की सापेक्ष चमक है, और $L_{darker}$ गहरे रंग की सापेक्ष चमक है (मान सीमा 0.0 से 1.0 तक है)। WCAG 2.1 स्तर AAA को प्राप्त करने के लिए, सामान्य टेक्स्ट के लिए &lt;strong>7:1 या अधिक&lt;/strong> और बड़े टेक्स्ट के लिए &lt;strong>4.5:1 या अधिक&lt;/strong> के कंट्रास्ट अनुपात की आवश्यकता होती है।&lt;/p>
&lt;p>सापेक्ष चमक $L$ की गणना sRGB कलर स्पेस के RGB मानों से निम्नलिखित जटिल सूत्र का उपयोग करके की जाती है।&lt;/p>
$$L = 0.2126 \times R + 0.7152 \times G + 0.0722 \times B$$&lt;p>प्रत्येक घटक ($R, G, B$) को 255 से विभाजित मूल 8-बिट मान ($R_{sRGB}$) के सामान्यीकृत मान का उपयोग करके गामा सुधार को हल करने के लिए निम्नलिखित रूपांतरण किया जाता है।&lt;/p>
$$
R, G, B =
\begin{cases}
\frac{C_{sRGB}}{12.92} &amp; \text{if } C_{sRGB} \le 0.03928 \\
\left( \frac{C_{sRGB} + 0.055}{1.055} \right)^{2.4} &amp; \text{otherwise}
\end{cases}
$$&lt;p>इस गणना को मैन्युअल रूप से करना मुश्किल है, लेकिन रंग डिज़ाइन टूल का उपयोग करके, आप यांत्रिक रूप से उन रंगों का चयन कर सकते हैं जो 7:1 ($CR \ge 7.0$) के कंट्रास्ट अनुपात को पूरा करते हैं।&lt;/p>
&lt;h3 id="22-hsl-बनम-rgb-बनम-oklch">2.2 HSL बनाम RGB बनाम OKLCH
&lt;/h3>&lt;p>कलर पैलेट बनाते समय, RGB या HSL मुख्य धारा हुआ करते थे। हालाँकि, &amp;ldquo;अवधारणात्मक एकरूपता (perceptual uniformity)&amp;rdquo; के मामले में इनमें एक बड़ी खामी है।&lt;/p>
&lt;ul>
&lt;li>&lt;strong>RGB&lt;/strong>: प्रकाश के यांत्रिक प्राथमिक रंग होने के कारण, मनुष्यों के लिए &amp;ldquo;हल्का (brighten)&amp;rdquo; या &amp;ldquo;गहरा (darken)&amp;rdquo; करने जैसे सहज समायोजन करना मुश्किल है।&lt;/li>
&lt;li>&lt;strong>HSL&lt;/strong>: यह ह्यु (Hue), सैचुरेशन (Saturation), और लाइटनेस (Lightness) का उपयोग करता है, लेकिन HSL की &amp;ldquo;लाइटनेस (L)&amp;rdquo; मानव आँख द्वारा देखी जाने वाली चमक से मेल नहीं खाती। उदाहरण के लिए, 50% HSL लाइटनेस वाला शुद्ध पीला और शुद्ध नीला संख्यात्मक रूप से समान रूप से चमकीले हैं, लेकिन पीला रंग मानव आँख को बहुत अधिक चमकीला दिखाई देता है।&lt;/li>
&lt;li>&lt;strong>OKLCH&lt;/strong>: यह नवीनतम कलर स्पेस है जिसे हाल ही में CSS Color Module Level 4 में पेश किया गया है। इसमें लाइटनेस (perceptual lightness), क्रोमा (saturation), और ह्यु (hue) शामिल हैं, और यह &lt;strong>मानव दृश्य विशेषताओं (अवधारणात्मक एकरूपता) से पूरी तरह मेल खाता है&lt;/strong>।&lt;/li>
&lt;/ul>
&lt;p>OKLCH का उपयोग करके, आप ह्यु (Hue) बदलते समय समान अवधारणात्मक लाइटनेस बनाए रख सकते हैं, जिससे डार्क मोड के लिए कलर पैलेट जनरेशन अत्यधिक पूर्वानुमानित और सुरक्षित हो जाता है।&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-css" data-lang="css">&lt;span class="line">&lt;span class="cl">&lt;span class="c">/* OKLCH का उपयोग करके CSS वेरिएबल्स को परिभाषित करने का उदाहरण */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">:&lt;/span>&lt;span class="nd">root&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">/* लाइट मोड के लिए उच्च आधार लाइटनेस और कम सैचुरेशन */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--bg-base&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nf">oklch&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mf">0.98&lt;/span> &lt;span class="mf">0.01&lt;/span> &lt;span class="mi">250&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--text-base&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nf">oklch&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mf">0.25&lt;/span> &lt;span class="mf">0.02&lt;/span> &lt;span class="mi">250&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--primary-brand&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nf">oklch&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mf">0.65&lt;/span> &lt;span class="mf">0.15&lt;/span> &lt;span class="mi">250&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>&lt;span class="nt">data-theme&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;dark&amp;#34;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">/* डार्क मोड में, केवल लाइटनेस को उलटने से अवधारणात्मक कंट्रास्ट बनाए रखना आसान हो जाता है */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--bg-base&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nf">oklch&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mf">0.20&lt;/span> &lt;span class="mf">0.02&lt;/span> &lt;span class="mi">250&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--text-base&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nf">oklch&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mf">0.95&lt;/span> &lt;span class="mf">0.01&lt;/span> &lt;span class="mi">250&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">--primary-brand&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nf">oklch&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mf">0.75&lt;/span> &lt;span class="mf">0.15&lt;/span> &lt;span class="mi">250&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c">/* डार्क मोड के लिए दृश्यता सुनिश्चित करने के लिए थोड़ा हल्का */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>इस तरह से OKLCH को अपनाकर, आप कई थीमों में लगातार कंट्रास्ट अनुपात (WCAG AAA मानक) सुनिश्चित करने के लिए आसानी से एक तर्क बना सकते हैं।&lt;/p>
&lt;hr>
&lt;h2 id="3-fouc-flash-of-unstyled-content-क-रकथम-और-ssr-हइडरशन">3. FOUC (Flash of Unstyled Content) की रोकथाम और SSR हाइड्रेशन
&lt;/h2>&lt;p>डार्क मोड का समर्थन करते समय डेवलपर्स को सबसे अधिक परेशान करने वाली समस्या स्क्रीन झिलमिलाहट (flickering) है, जिसे &lt;strong>FOUC (Flash of Unstyled Content)&lt;/strong> कहा जाता है।&lt;/p>
&lt;h3 id="31-कलइट-सइड-js-दवर-थम-सवचग-क-जल">3.1 क्लाइंट-साइड JS द्वारा थीम स्विचिंग का जाल
&lt;/h3>&lt;p>React और Vue जैसे SPA (या SSG के साथ स्थिर साइटों) में, उपयोगकर्ता की प्राथमिकताओं को &lt;code>localStorage&lt;/code> में सहेजना और थीम स्विच करने के लिए जावास्क्रिप्ट का उपयोग करके उन्हें पढ़ना आम बात है। हालाँकि, यदि यह प्रक्रिया React के &lt;code>useEffect&lt;/code> में की जाती है, तो निम्नलिखित समस्याएँ उत्पन्न होती हैं।&lt;/p>
&lt;ol>
&lt;li>ब्राउज़र लाइट मोड HTML/CSS रेंडर करता है।&lt;/li>
&lt;li>JS बंडल लोड और निष्पादित (executed) किया जाता है।&lt;/li>
&lt;li>&lt;code>localStorage&lt;/code> से &lt;code>dark&lt;/code> सेटिंग पढ़ी जाती है।&lt;/li>
&lt;li>&lt;code>dark&lt;/code> क्लास HTML में जोड़ा जाता है, और स्क्रीन अचानक डार्क हो जाती है (झिलमिलाहट)।&lt;/li>
&lt;/ol>
&lt;h3 id="32-परण-fouc-रकथम-ककज-और-ssr-क-उपयग">3.2 पूर्ण FOUC रोकथाम: कुकीज़ और SSR का उपयोग
&lt;/h3>&lt;p>FOUC को पूरी तरह से रोकने और हाइड्रेशन त्रुटियों से बचने का सबसे अच्छा अभ्यास है &lt;strong>उपयोगकर्ता की थीम सेटिंग्स को &lt;code>document.cookie&lt;/code> में सहेजना और सर्वर-साइड रेंडरिंग (SSR) चरण में उपयुक्त क्लास के साथ HTML वापस करना&lt;/strong>।&lt;/p>
&lt;p>नीचे दिया गया अनुक्रम आरेख (sequence diagram) कुकीज़ का उपयोग करके थीम आरंभीकरण (theme initialization) के लिए आदर्श प्रवाह दिखाता है।&lt;/p>
&lt;pre class="mermaid">
sequenceDiagram
participant User as &amp;#34;उपयोगकर्ता&amp;#34;
participant Browser as &amp;#34;ब्राउज़र OS&amp;#34;
participant Server as &amp;#34;सर्वर SSR&amp;#34;
participant DOM as &amp;#34;क्लाइंट DOM&amp;#34;
User-&amp;gt;&amp;gt;Browser: &amp;#34;पेज का अनुरोध करें&amp;#34;
Browser-&amp;gt;&amp;gt;Server: &amp;#34;कुकी (theme=dark) के साथ GET अनुरोध&amp;#34;
Server--&amp;gt;&amp;gt;Browser: &amp;#34;&amp;lt;html data-theme=&amp;#39;dark&amp;#39;&amp;gt; के साथ HTML वापस करें&amp;#34;
Browser-&amp;gt;&amp;gt;DOM: &amp;#34;प्रारंभिक HTML रेंडर करें (कोई FOUC नहीं)&amp;#34;
DOM-&amp;gt;&amp;gt;DOM: &amp;#34;हाइड्रेशन स्क्रिप्ट निष्पादित करें&amp;#34;
alt &amp;#34;कुकी अनुपस्थित (पहली यात्रा)&amp;#34;
DOM-&amp;gt;&amp;gt;Browser: &amp;#34;OS prefers-color-scheme जांचें&amp;#34;
Browser--&amp;gt;&amp;gt;DOM: &amp;#34;matchMedia परिणाम (जैसे dark)&amp;#34;
DOM-&amp;gt;&amp;gt;DOM: &amp;#34;इनलाइन ब्लॉकिंग स्क्रिप्ट के माध्यम से data-theme=&amp;#39;dark&amp;#39; सेट करें&amp;#34;
end
&lt;/pre>
&lt;h3 id="33-इनलइन-सकरपट-क-मधयम-स-रकष-पकत-उन-सथर-सइट-क-लए-ज-ककज-क-उपयग-नह-कर-सकत-ह">3.3 इनलाइन स्क्रिप्ट के माध्यम से रक्षा पंक्ति (उन स्थिर साइटों के लिए जो कुकीज़ का उपयोग नहीं कर सकती हैं)
&lt;/h3>&lt;p>उन ब्लॉगों के लिए जो केवल SSG (स्टेटिक साइट जेनरेशन) का उपयोग करते हैं और SSR नहीं कर सकते (जैसे Hugo, Gatsby, या Astro का स्टेटिक एक्सपोर्ट), &lt;code>&amp;lt;head&amp;gt;&lt;/code> टैग के अंदर एक ब्लॉकिंग इनलाइन जावास्क्रिप्ट रखना अनिवार्य है जो DOM रेंडर होने से ठीक पहले क्लास जोड़ता है।&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- &amp;lt;head&amp;gt; के अंत में रखें --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="kd">function&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">var&lt;/span> &lt;span class="nx">localTheme&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">localStorage&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">getItem&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;theme&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">var&lt;/span> &lt;span class="nx">osTheme&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">window&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">matchMedia&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;(prefers-color-scheme: dark)&amp;#39;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="nx">matches&lt;/span> &lt;span class="o">?&lt;/span> &lt;span class="s1">&amp;#39;dark&amp;#39;&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="s1">&amp;#39;light&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">var&lt;/span> &lt;span class="nx">theme&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">localTheme&lt;/span> &lt;span class="o">||&lt;/span> &lt;span class="nx">osTheme&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">documentElement&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">setAttribute&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;data-theme&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">theme&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span> &lt;span class="k">catch&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">e&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>चूँकि यह छोटी स्क्रिप्ट ब्राउज़र की रेंडरिंग को ब्लॉक करके तुरंत निष्पादित की जाती है, &lt;code>data-theme&lt;/code> विशेषता स्क्रीन के रेंडर होने के समय तक पहले ही सेट हो जाती है, जिससे स्क्रीन झिलमिलाहट (FOUC) को पूरी तरह से रोका जा सकता है।&lt;/p>
&lt;hr>
&lt;h2 id="4-tailwind-css-और-र-scsscss-करयनवयन-दषटकण">4. Tailwind CSS और रॉ SCSS/CSS कार्यान्वयन दृष्टिकोण
&lt;/h2>&lt;p>वास्तविक परियोजनाओं में डार्क मोड को एकीकृत करते समय, प्रत्येक टूल के दृष्टिकोण को समझना आवश्यक है।&lt;/p>
&lt;h3 id="41-tailwind-css-म-डरक-मड">4.1 Tailwind CSS में डार्क मोड
&lt;/h3>&lt;p>Tailwind CSS डिफ़ॉल्ट रूप से &lt;code>dark:&lt;/code> संस्करण प्रदान करता है, जिससे डार्क मोड को लागू करना बहुत आसान हो जाता है। आप कॉन्फ़िगरेशन फ़ाइल (&lt;code>tailwind.config.js&lt;/code>) में &lt;code>darkMode&lt;/code> गुण सेट करते हैं।&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// tailwind.config.js
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="nx">module&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">exports&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// &amp;#39;media&amp;#39; (OS सेटिंग पर निर्भर) या &amp;#39;class&amp;#39; (मैन्युअल रूप से टॉगल करने योग्य)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="nx">darkMode&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s1">&amp;#39;class&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">theme&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">extend&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">colors&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cm">/* CSS वेरिएबल्स का उपयोग करके Tailwind कलर पैलेट का विस्तार करें */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">primary&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s1">&amp;#39;rgb(var(--color-primary) / &amp;lt;alpha-value&amp;gt;)&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">background&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s1">&amp;#39;rgb(var(--color-background) / &amp;lt;alpha-value&amp;gt;)&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>HTML पक्ष पर, आपको बस निम्नानुसार क्लास जोड़ने की आवश्यकता है।&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">h1&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;text-2xl font-bold&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>Hello World&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">h1&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">p&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;mt-2&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>Tailwind makes dark mode incredibly easy.&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>हालाँकि, हर तत्व में &lt;code>dark:bg-xxx&lt;/code> जोड़ने से घटक का आकार (component bloat) बढ़ सकता है। बड़े ब्लॉग और ऐप के लिए, एक हाइब्रिड डिज़ाइन (सिमेंटिक कलर डिज़ाइन) की सिफारिश की जाती है जो &lt;strong>CSS वेरिएबल्स पर आधारित है और Tailwind से उन CSS वेरिएबल्स को संदर्भित करता है&lt;/strong>।&lt;/p>
&lt;p>नीचे दिया गया क्लास आरेख CSS वेरिएबल इनहेरिटेंस और एप्लिकेशन लेयर्स दिखाता है।&lt;/p>
&lt;pre class="mermaid">
classDiagram
class GlobalCSSVariables {
&amp;#34;--color-brand-500&amp;#34;
&amp;#34;--color-gray-900&amp;#34;
}
class SemanticVariables {
&amp;#34;--bg-primary&amp;#34;
&amp;#34;--text-base&amp;#34;
&amp;#34;--accent&amp;#34;
}
class TailwindConfig {
&amp;#34;theme.colors.background&amp;#34;
&amp;#34;theme.colors.primary&amp;#34;
}
class UIComponents {
&amp;#34;class=&amp;#39;bg-background text-primary&amp;#39;&amp;#34;
}
GlobalCSSVariables &amp;lt;|-- SemanticVariables : &amp;#34;:root &amp;amp; .dark&amp;#34;
SemanticVariables &amp;lt;|-- TailwindConfig : &amp;#34;tailwind.config.js&amp;#34;
TailwindConfig &amp;lt;.. UIComponents : &amp;#34;उपयोगिता कक्षाएं लागू करता है&amp;#34;
&lt;/pre>
&lt;h3 id="42-raw-scsscss-क-सथ-करयनवयन-mixin-क-उपयग">4.2 Raw SCSS/CSS के साथ कार्यान्वयन (Mixin का उपयोग)
&lt;/h3>&lt;p>उन परियोजनाओं के लिए जो Tailwind का उपयोग नहीं करते हैं और अपना स्वयं का SCSS लिखते हैं, डार्क मोड शैलियों को एनकैप्सुलेट करने के लिए &lt;code>@mixin&lt;/code> का उपयोग करें।&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-scss" data-lang="scss">&lt;span class="line">&lt;span class="cl">&lt;span class="cm">/* SCSS Mixin परिभाषा */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">@mixin&lt;/span>&lt;span class="nf"> dark-mode&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cm">/* [data-theme=&amp;#39;dark&amp;#39;] विशेषता या OS सेटिंग्स दोनों का समर्थन करता है */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">[&lt;/span>&lt;span class="nt">data-theme&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;dark&amp;#39;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="k">&amp;amp;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">@content&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">@media&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">prefers-color-scheme&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="ni">dark&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nd">:root:not&lt;/span>&lt;span class="o">([&lt;/span>&lt;span class="nt">data-theme&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;light&amp;#39;&lt;/span>&lt;span class="o">])&lt;/span> &lt;span class="k">&amp;amp;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">@content&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cm">/* उपयोग उदाहरण */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nc">.card&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">background-color&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mh">#ffffff&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">color&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mh">#333333&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">border&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="kt">px&lt;/span> &lt;span class="ni">solid&lt;/span> &lt;span class="mh">#eeeeee&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">@include&lt;/span>&lt;span class="nd"> dark-mode&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">background-color&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mh">#1a202c&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">color&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mh">#e2e8f0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">border-color&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mh">#2d3748&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>यह विधि सहज है, लेकिन संकलित CSS फ़ाइल का आकार आसानी से बढ़ सकता है (क्योंकि मीडिया क्वेरी प्रत्येक चयनकर्ता में डुप्लिकेट की जाती है), इसलिए वर्तमान प्रवृत्ति CSS वेरिएबल्स (Custom Properties) के आसपास केंद्रित डिज़ाइन में स्थानांतरित होने की है।&lt;/p>
&lt;hr>
&lt;h2 id="5-चतर-image-और-svg-डरक-मड-अनकलन">5. चित्र (Image) और SVG डार्क मोड अनुकूलन
&lt;/h2>&lt;p>भले ही टेक्स्ट और बैकग्राउंड के लिए रंग डिज़ाइन पूरा हो गया हो, यदि सामग्री के रूप में रखे गए चित्र और आइकन (SVG) लाइट मोड में रहते हैं, तो वे डार्क मोड में बहुत चमकीले और अलग दिखाई देंगे। इनके लिए अनुकूलन (optimization) भी आवश्यक है।&lt;/p>
&lt;h3 id="51-css-फलटर-चतर-क-चमक-क-कम-करन-क-लए">5.1 CSS फ़िल्टर चित्र की चमक को कम करने के लिए
&lt;/h3>&lt;p>फ़ोटो जैसी बिटमैप छवियों को डार्क मोड में प्रदर्शित किए जाने पर वे बहुत चमकीली हो सकती हैं। CSS &lt;code>filter&lt;/code> प्रॉपर्टी का उपयोग करके चित्र की चमक (brightness) और कंट्रास्ट को थोड़ा कम करने से, इसे डार्क थीम UI में स्वाभाविक रूप से मिश्रित किया जा सकता है।&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-css" data-lang="css">&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>&lt;span class="nt">data-theme&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;dark&amp;#39;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="nt">img&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nd">not&lt;/span>&lt;span class="o">([&lt;/span>&lt;span class="nt">src&lt;/span>&lt;span class="o">*=&lt;/span>&lt;span class="s2">&amp;#34;.svg&amp;#34;&lt;/span>&lt;span class="o">])&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">/* चमक कम करें और कंट्रास्ट थोड़ा बढ़ाएं */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">filter&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nb">brightness&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mf">0.8&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="nb">contrast&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mf">1.1&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">transition&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="k">filter&lt;/span> &lt;span class="mf">0.3&lt;/span>&lt;span class="kt">s&lt;/span> &lt;span class="kc">ease&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>&lt;span class="nt">data-theme&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;dark&amp;#39;&lt;/span>&lt;span class="o">]&lt;/span> &lt;span class="nt">img&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nd">hover&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">/* होवर पर मूल चमक में वापस लौटें (यदि उपयोगकर्ता विवरण देखना चाहता है) */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">filter&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nb">brightness&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="nb">contrast&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="52-picture-टग-क-मधयम-स-छवय-क-सवच-करन">5.2 &lt;code>&amp;lt;picture&amp;gt;&lt;/code> टैग के माध्यम से छवियों को स्विच करना
&lt;/h3>&lt;p>लोगो छवियाँ या व्याख्यात्मक आरेख (जैसे एक निश्चित सफेद पृष्ठभूमि वाले JPEG) को केवल फ़िल्टरिंग द्वारा नियंत्रित नहीं किया जा सकता है। उस स्थिति में, डार्क मोड के लिए एक अलग चित्र फ़ाइल पर स्विच करने के लिए HTML &lt;code>&amp;lt;picture&amp;gt;&lt;/code> तत्व और मीडिया क्वेरीज़ का उपयोग करना सही तरीका है।&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">picture&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- डार्क मोड OS सेटिंग वाले उपयोगकर्ताओं को यह दिखाएं --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">source&lt;/span> &lt;span class="na">srcset&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;/img/logo-dark.png&amp;#34;&lt;/span> &lt;span class="na">media&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;(prefers-color-scheme: dark)&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- डिफ़ॉल्ट (लाइट मोड) --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">img&lt;/span> &lt;span class="na">src&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;/img/logo-light.png&amp;#34;&lt;/span> &lt;span class="na">alt&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;साइट का लोगो&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">picture&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>※हालाँकि, यह विधि &lt;code>localStorage&lt;/code> आदि का उपयोग करके मैन्युअल टॉगलिंग से जुड़ी नहीं है (यह केवल OS सेटिंग्स पर निर्भर करती है)। इसलिए, यदि आपने मैन्युअल स्विचिंग लागू की है, तो आपको JS का उपयोग करके छवि के &lt;code>src&lt;/code> को गतिशील रूप से फिर से लिखना होगा, या CSS क्लास का उपयोग करके &lt;code>display: none&lt;/code> को टॉगल करना होगा।&lt;/p>
&lt;h3 id="53-svg-आइकन-क-लए-currentcolor-समरथन">5.3 SVG आइकन के लिए &lt;code>currentColor&lt;/code> समर्थन
&lt;/h3>&lt;p>आइकन के लिए उपयोग किए जाने वाले इनलाइन SVG को पैरेंट एलिमेंट के टेक्स्ट रंग से लिंक करना सबसे चतुर तरीका है। SVG के &lt;code>fill&lt;/code> या &lt;code>stroke&lt;/code> एट्रिब्यूट के लिए &lt;code>currentColor&lt;/code> निर्दिष्ट करें।&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- CSS color प्रॉपर्टी का मान (जैसे var(--text-primary)) स्वचालित रूप से लागू किया जाता है --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">svg&lt;/span> &lt;span class="na">viewBox&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;0 0 24 24&amp;#34;&lt;/span> &lt;span class="na">fill&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;currentColor&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">path&lt;/span> &lt;span class="na">d&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;M12 2L2 22h20L12 2z&amp;#34;&lt;/span> &lt;span class="p">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">svg&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>नतीजतन, जब डार्क मोड चालू होता है और पैरेंट एलिमेंट का टेक्स्ट रंग सफेद हो जाता है, तो SVG आइकन भी अपने आप सफेद हो जाएगा।&lt;/p>
&lt;hr>
&lt;h2 id="6-नषकरष-टकऊ-डरक-मड-डजइन-क-ओर">6. निष्कर्ष: टिकाऊ डार्क मोड डिज़ाइन की ओर
&lt;/h2>&lt;p>ब्लॉग या वेब एप्लिकेशन में उच्च गुणवत्ता वाले डार्क मोड को लागू करने के लिए, एक CSS डिज़ाइन आवश्यक है जो निम्नलिखित बिंदुओं को कवर करता हो:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>CSS Custom Properties का लाभ उठाएं&lt;/strong>: रंग हार्डकोडिंग से बचें और अर्थपूर्ण चर नामों (उदा. &lt;code>--bg-primary&lt;/code>) का उपयोग करके उन्हें अमूर्त करें।&lt;/li>
&lt;li>&lt;strong>OKLCH कलर स्पेस अपनाएं&lt;/strong>: WCAG 2.1 AAA के अनुरूप अत्यधिक सुलभ कंट्रास्ट अनुपात (7:1 या अधिक) को एक अवधारणात्मक रूप से समान कलर स्पेस का उपयोग करके तार्किक रूप से डिज़ाइन करें।&lt;/li>
&lt;li>&lt;strong>FOUC को सख्ती से रोकें&lt;/strong>: SSR और कुकीज़ को जोड़कर, या &lt;code>&amp;lt;head&amp;gt;&lt;/code> के अंदर ब्लॉकिंग इनलाइन स्क्रिप्ट का उपयोग करके शुरुआती लोड पर स्क्रीन की झिलमिलाहट को पूरी तरह से खत्म करें।&lt;/li>
&lt;li>&lt;strong>मीडिया और एसेट को अनुकूलित करें&lt;/strong>: टेक्स्ट के अलावा अन्य तत्वों को डार्क थीम में मिलाने के लिए &lt;code>filter: brightness()&lt;/code>, &lt;code>currentColor&lt;/code>, और &lt;code>&amp;lt;picture&amp;gt;&lt;/code> टैग का पूरा उपयोग करें।&lt;/li>
&lt;/ol>
&lt;p>यह कहा जा सकता है कि केवल &amp;ldquo;रंगों को उलटने&amp;rdquo; से परे ये सावधानीपूर्वक विचार एक आधुनिक ब्लॉग की शर्तें हैं जो उपयोगकर्ताओं द्वारा पसंद किया जाएगा और पढ़ने का एक उत्कृष्ट अनुभव (reading experience) प्रदान करेगा जो आँखों पर कम थकाने वाला है। यदि आप एक डेवलपर हैं जो डार्क मोड लागू करने वाले हैं, तो कृपया इस लेख में दिए गए डिज़ाइन पैटर्न को संदर्भ के रूप में उपयोग करें।&lt;/p></description></item></channel></rss>