केवल इसलिए कि दोनों ही मामलों में रंगों का संयोजन समान नहीं है, क्योंकि शीर्ष परत की अपारदर्शिता नीचे की परत के रंग को कैसे प्रभावित करती है ।
पहली स्थिति के लिए, आपको 50% नीला और 50% पारदर्शी ऊपरी परत में दिखाई देता है। पारदर्शी भाग के माध्यम से, आप नीचे की परत में 50% लाल रंग देखते हैं (इसलिए हम केवल कुल लाल का 25% ही देखते हैं )। दूसरे मामले के लिए एक ही तर्क ( 50% लाल और 25% नीला ); इस प्रकार आपको अलग-अलग रंग दिखाई देंगे क्योंकि दोनों मामलों के लिए हमारे पास समान अनुपात नहीं है।
इससे बचने के लिए आपको अपने दोनों रंगों के लिए समान अनुपात होना चाहिए।
बेहतर उदाहरण के लिए यहां एक उदाहरण दिया गया है और दिखाया गया है कि हम एक ही रंग कैसे प्राप्त कर सकते हैं
शीर्ष परत (आंतरिक अवधि) में हमारे पास 0.25
अस्पष्टता होती है (इसलिए हमारे पास पहले रंग का 25% और पारदर्शी का 75%) तब नीचे की परत (बाहरी अवधि) के लिए हमारे पास 0.333
अस्पष्टता होती है (इसलिए हमारे पास 1/3 परत है 75% = 25% रंग और शेष पारदर्शी है)। दोनों परतों (25%) में हमारा समान अनुपात है, इसलिए हम परतों के क्रम को उलटते हुए भी एक ही रंग देखते हैं ।
.a {
background-color: rgba(255, 0, 0, 0.333)
}
.b {
background-color: rgba(0, 0, 255, 0.333)
}
.a > .b {
background-color: rgba(0, 0, 255, 0.25)
}
.b > .a {
background-color: rgba(255, 0, 0, 0.25)
}
<span class="a"><span class="b"> Color 1</span></span>
<span class="b"><span class="a">Different Color 2</span></span>
साइड नोट के रूप में, सफेद पृष्ठभूमि भी रंगों के प्रतिपादन को प्रभावित कर रही है। इसका अनुपात 50% है जो 100% (25% + 25% + 50%) का तार्किक परिणाम देगा।
आप यह भी देख सकते हैं कि हमारे दोनों रंगों के लिए समान अनुपात होना संभव नहीं होगा यदि शीर्ष परत की अपारदर्शिता बड़ी है 0.5
क्योंकि पहले वाले के पास 50% से अधिक होगा और दूसरे के लिए यह 50% से कम रहेगा। एक:
.a {
background-color: rgba(255, 0, 0, 1)
}
.b {
background-color: rgba(0, 0, 255, 1)
}
.a > .b {
background-color: rgba(0, 0, 255, 0.6)
}
.b > .a {
background-color: rgba(255, 0, 0, 0.6)
}
<span class="a"><span class="b"> Color 1</span></span>
<span class="b"><span class="a">Different Color 2</span></span>
सामान्य तुच्छ मामला तब होता है जब शीर्ष परत होती है opacity:1
जो 100% के अनुपात के साथ शीर्ष रंग बनाती है; इस प्रकार यह एक अपारदर्शी रंग है।
एक और अधिक सटीक और सटीक व्याख्या यहाँ के लिए रंग हम दोनों परतों के संयोजन के बाद देखने के आकलन के लिए उपयोग सूत्र है रेफरी :
ColorF = (ColorT*opacityT + ColorB*OpacityB*(1 - OpacityT)) / factor
ColorF हमारा अंतिम रंग है। ColorT / ColorB क्रमशः ऊपर और नीचे के रंग हैं। opacityT / opacityB क्रमशः प्रत्येक रंग के लिए परिभाषित शीर्ष और नीचे के स्थान हैं:
factor
इस सूत्र द्वारा परिभाषित किया गया है OpacityT + OpacityB*(1 - OpacityT)
।
यह स्पष्ट है कि यदि हम दो परतों को factor
बदलेंगे तो यह नहीं बदलेगी (यह स्थिर रहेगी) लेकिन हम स्पष्ट रूप से देख सकते हैं कि प्रत्येक रंग के लिए अनुपात बदल जाएगा क्योंकि हमारे पास एक ही गुणक नहीं है।
हमारे प्रारंभिक मामले के लिए, दोनों अपारदर्शिता हैं 0.5
इसलिए हमारे पास होगा:
ColorF = (ColorT*0.5 + ColorB*0.5*(1 - 0.5)) / factor
जैसा ऊपर बताया गया है, शीर्ष रंग में 50% ( 0.5
) का अनुपात है और नीचे वाले का 25% ( 0.5*(1-0.5)
) अनुपात है, इसलिए परतों को स्विच करने से ये अनुपात भी बदल जाएंगे; इस प्रकार हम एक अलग अंतिम रंग देखते हैं ।
अब अगर हम दूसरे उदाहरण पर विचार करें तो हमारे पास होगा:
ColorF = (ColorT*0.25 + ColorB*0.333*(1 - 0.25)) / factor
इस मामले में हमारे पास 0.25 = 0.333*(1 - 0.25)
दो परतों को स्विच करने का कोई प्रभाव नहीं होगा; इस प्रकार रंग समान रहेगा।
हम तुच्छ मामलों की भी स्पष्ट रूप से पहचान कर सकते हैं:
- जब शीर्ष परत
opacity:0
सूत्र के बराबर होती हैColorF = ColorB
- जब शीर्ष परत
opacity:1
सूत्र के बराबर होती हैColorF = ColorT