2013-02-22 12 views
5

पर अल्फा जोड़ने के लिए jQuery फ़ंक्शन मैं ऐसा कार्य करने की कोशिश कर रहा हूं जो तत्व के बीजी की जांच करता है और अल्फा चैनल देने के लिए अपने बीजी को बदलता है। समारोह इस रूप है:jQuery बीजी

$.fn.bgalpha = function(alpha) { 
    var bg = $(this).css('background-color'); 
    //... 
} 

लेकिन: क्रोम rgb के रूप में bg लौटाता है जब सामान्य रंग सेट कर दिया जाता है और साथ RGBA के रूप में शून्य के जब कोई bg, यानी 8 हमेशा हेक्स देता है, है IE9 रिटर्न 'पारदर्शी' जब है कोई बीजी और आरजीबी जब बीजी आदि है तो बहुत अलग मामले।

मैं क्या करना चाहता हूं> वस्तु के बीजी रंग से आर, जी, बी प्राप्त करें, इसे 'ए' चैनल में जोड़ें और सभी मानों के साथ आरजीबीए के रूप में तत्व बीजी सेट करें। लेकिन जब हम क्रॉस-ब्राउजिंग के बारे में बात करते हैं तो सरल चीज से यह मुश्किल और जटिल हो रहा है।

क्या आपको कोई विचार है कि उन रंगों को कुछ 'अनौपचारिक' तरीके से कैसे संचालित किया जाए? अलग मामलों में मैं मान 'कोई नहीं', 'पारदर्शी', 'RGBA', 'rgb' या bg

+0

यह शायद बहुत आसान की तुलना में यह लग रहा है। यदि ब्राउजर हेक्स को रंग के रूप में लौटाता है, तो शायद यह आरजीबी का समर्थन नहीं करता है, और सभी ब्राउज़र नहीं करते हैं। सभी ब्राउज़र आरजीबीए का समर्थन नहीं करते हैं, और यदि आप ब्राउज़र आरजीबीए का समर्थन नहीं करते हैं तो आप अल्फा चैनल सेट नहीं कर सकते हैं, इसलिए यदि आप आरजीबीए का समर्थन करते हैं तो आपको परीक्षण करके शुरू करना होगा, अगर यह करता है, तो बस रंग को आरजीबीए के साथ सेट करें! – adeneo

+0

वर्कअराउंड के बारे में: दो तत्वों का उपयोग करें, एक दूसरे के शीर्ष पर स्तरित, पृष्ठभूमि के साथ एक और सामग्री के साथ एक। फिर बस पृष्ठभूमि की अस्पष्टता बदलें। – Blazemonger

उत्तर

2

का प्रारंभिक मूल्य के रूप में 'हेक्स' jQuery Color plugin (यह आधिकारिक तौर पर स्वीकृत है) और उसके .alpha() विधि का उपयोग शामिल मिलता है।

निम्नलिखित कोड का टुकड़ा this की पृष्ठभूमि का रंग बदल जाएगा, तो यह 50% पारदर्शी है:

var clr2 = $.Color(this,'background-color').alpha(0.5); 
$(this).css('background-color', clr2.toRgbaString()); 

या एक पंक्ति के रूप में:

$(this).css('background-color', $.Color(this,'background-color').alpha(0.5).toRgbaString()); 

http://jsfiddle.net/mblase75/aea3h/

+0

बहुत सारे कोड है ... – OPOPO

+0

वास्तव में नहीं। निर्भर करता है कि आप क्या हासिल करना चाहते हैं। मैंने इसे नीचे छीन लिया है। – Blazemonger

+0

लाल-बीजी # एलओएल div मिला, $ ('# lol')। Bgalpha (0.5); और इसके बीजी 50% पारदर्शी है, यह है कि। – OPOPO

0
$.fn.bgalpha = function(alpha) 
{ 
    return $(this).each(function(){ 
     $(this).css('background-color', $.Color(this,'background-color').alpha(alpha).toRgbaString());   
    }); 
} 

Blazemonger's का उपयोग करना समाधान - यह अंतिम कोड है।

का उपयोग करना:

$('.something').bgalpha(0.8); 

और यह आवश्यकता jquery.color.js (minifing के बाद 7kb)