रंग सिद्धांत

Opacity, Transparency, और Alpha Channel समझाया गया

4 मिनट पठन

Opacity, transparency, और alpha तीन शब्द हैं जिन्हें डिज़ाइनर और डेवलपर एक-दूसरे के स्थान पर उपयोग करते हैं — लेकिन वे संबंधित फिर भी अलग अवधारणाओं का वर्णन करते हैं जो व्यवहार में अलग तरह से काम करते हैं।

Opacity क्या है?

Opacity यह बताता है कि कोई चीज़ कितनी opaque है — कितनी विज़ुअली ठोस। यह आमतौर पर 0 से 1 के बीच के मान के रूप में व्यक्त किया जाता है, जहां: - 0 = पूरी तरह पारदर्शी (अदृश्य) - 1 = पूरी तरह opaque (पूरी तरह दृश्यमान) - 0.5 = 50% दृश्यमान, 50% देखने योग्य

Opacity एक रेंडर किए गए ऑब्जेक्ट की प्रॉपर्टी है, न कि रंग की प्रॉपर्टी।

Opacity बनाम Visibility बनाम Display

तीन CSS प्रॉपर्टी एलिमेंट को छुपा सकती हैं, लेकिन केवल एक ऐसा transparency के माध्यम से करती है:

  • opacity: 0 — एलिमेंट अदृश्य है लेकिन अभी भी स्थान लेता है और घटनाओं का जवाब देता है
  • visibility: hidden — एलिमेंट अदृश्य है और स्थान लेता है, लेकिन घटनाओं का जवाब नहीं देता
  • display: none — एलिमेंट लेआउट से पूरी तरह हटा दिया जाता है

इमेज में Alpha Channel

रास्टर इमेज फॉर्मेट में, alpha channel लाल, हरे और नीले के साथ एक चौथा डेटा चैनल है। जबकि RGB चैनल रंग परिभाषित करते हैं, alpha channel प्रत्येक पिक्सेल की opacity को स्वतंत्र रूप से परिभाषित करता है।

Alpha के लिए फॉर्मेट सपोर्ट

फॉर्मेट Alpha सपोर्ट नोट
PNG हां (8-bit) Lossless, लोगो और आइकन के लिए व्यापक रूप से उपयोग
WebP हां Alpha के साथ Lossy या lossless, उत्कृष्ट संपीड़न
AVIF हां सबसे अच्छा संपीड़न, बढ़ता ब्राउज़र सपोर्ट
SVG हां (opacity/CSS के माध्यम से) वेक्टर — गुणवत्ता हानि के बिना स्केल
JPEG नहीं Alpha डेटा छोड़ा जाता है; बैकग्राउंड सफेद या काला हो जाता है
GIF बाइनरी (0 या 1) पिक्सेल या तो पूरी तरह पारदर्शी या पूरी तरह opaque है

CSS opacity प्रॉपर्टी बनाम rgba/hsla

CSS opacity प्रॉपर्टी

.element {
  opacity: 0.5;
}

यह एलिमेंट और उसके सभी descendants पर लागू होता है। यदि एक पैरेंट एलिमेंट में opacity: 0.5 है और एक चाइल्ड में opacity: 0.8 है, तो चाइल्ड की प्रभावी opacity 0.5 × 0.8 = 0.4 है।

महत्वपूर्ण: आप एक चाइल्ड को उसके पैरेंट से अधिक opaque नहीं बना सकते

rgba() — रंग मान में ही Alpha

.element {
  background-color: rgba(59, 130, 246, 0.5);  /* 50% opacity पर नीला */
  color: rgba(0, 0, 0, 1);                     /* टेक्स्ट पूरी तरह opaque रहता है */
}

rgba() के साथ, केवल उस रंग का उपयोग करने वाली विशिष्ट CSS प्रॉपर्टी semi-transparent बनाई जाती है।

/* सही: बैकग्राउंड पारदर्शी है, टेक्स्ट नहीं */
.card {
  background-color: rgba(255, 255, 255, 0.15);
  color: #FFFFFF;
}

/* गलत: टेक्स्ट सहित पूरा कार्ड semi-transparent हो जाता है */
.card {
  background-color: #FFFFFF;
  opacity: 0.15;
}

hsla() — Alpha के साथ HSL

background-color: hsla(210, 100%, 56%, 0.7);

आधुनिक CSS: / सिंटैक्स

CSS Color Level 4 ने किसी भी कलर फ़ंक्शन में alpha इंगित करने के लिए एक cleaner सिंटैक्स पेश किया:

background-color: rgb(59 130 246 / 0.5);
background-color: hsl(210 100% 56% / 0.7);
background-color: oklch(0.6 0.2 250 / 0.8);

यह hex के साथ भी काम करता है:

background-color: #3B82F680;  /* 2-डिजिट alpha (80 hex = ~50% opacity) के साथ Hex */

किसी भी hex रंग को उसके rgba समकक्ष में कनवर्ट करने के लिए Color Converter का उपयोग करें।

Transparency के साथ लेयरिंग

सरल Alpha Compositing

जब एक semi-transparent फोरग्राउंड लेयर बैकग्राउंड पर रखी जाती है, तो अंतिम पिक्सेल रंग होता है:

result = foreground × alpha + background × (1 - alpha)

व्यावहारिक Overlay पैटर्न

Darkening overlays हीरो इमेज पर टेक्स्ट पठनीयता में सुधार के लिए:

.hero::after {
  content: '';
  position: absolute;
  inset: 0;
  background-color: rgba(0, 0, 0, 0.5);
}

फ्रॉस्टेड ग्लास इफेक्ट (glassmorphism):

.glass-card {
  background-color: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(16px);
  border: 1px solid rgba(255, 255, 255, 0.2);
}

Overlays के लिए परफॉर्मेंस विचार

तेज़: opacity और rgba बैकग्राउंड

  • CSS opacity प्रॉपर्टी और rgba()/hsla() बैकग्राउंड रंग सभी आधुनिक ब्राउज़र में GPU पर composited हैं
  • opacity < 1 वाले एलिमेंट को उनकी compositor layer में promote किया जाता है
/* GPU-accelerated fade */
.element {
  transition: opacity 0.3s ease;
}

महंगा: backdrop-filter

backdrop-filter: blur() — glassmorphism में उपयोग — एलिमेंट के पीछे सभी पिक्सेल को पढ़ने, blur filter लागू करने की आवश्यकता है।

@media (prefers-reduced-motion: reduce) {
  .glass-card {
    background-color: rgba(20, 20, 30, 0.9);
    backdrop-filter: none;
  }
}

will-change हिंट

.modal {
  will-change: opacity;
  opacity: 0;
  transition: opacity 0.3s ease;
}

.modal.visible {
  opacity: 1;
}

मुख्य निष्कर्ष

  • Opacity (0–1) यह बताता है कि एलिमेंट कितना opaque है। CSS opacity प्रॉपर्टी पूरे एलिमेंट और उसके सभी descendants पर लागू होती है
  • इमेज में Alpha channel RGB के साथ एक चौथा डेटा चैनल है जो प्रति-पिक्सेल transparency परिभाषित करता है। PNG, WebP, AVIF, और SVG alpha सपोर्ट करते हैं; JPEG और GIF नहीं करते
  • rgba() और hsla() CSS प्रॉपर्टी में transparency लागू करते हैं बिना चाइल्ड एलिमेंट को प्रभावित किए
  • आधुनिक CSS / सिंटैक्स का उपयोग करता है: rgb(59 130 246 / 0.5), oklch(0.6 0.2 250 / 0.8)
  • परफॉर्मेंस के लिए: opacity और rgba() बैकग्राउंड GPU-accelerated और सस्ते हैं; backdrop-filter: blur() महंगा है
  • किसी भी hex रंग को rgba फॉर्मेट में कनवर्ट करने के लिए Color Converter का उपयोग करें

संबंधित रंग

संबंधित ब्रांड्स

संबंधित उपकरण