IE 8 में काम नहीं कर रहे rgba के साथ सीएसएस पृष्ठभूमि अस्पष्टता


110

मैं इस सीएसएस का उपयोग कर रहा हूँ <div>:

background: rgba(255, 255, 255, 0.3);

यह फ़ायरफ़ॉक्स में ठीक काम कर रहा है, लेकिन IE 8 में नहीं। मैं इसे कैसे काम करूँ?

जवाबों:


73

एक png बनाएं जो 1x1 पिक्सेल (धन्यवाद तीसवाँ) से बड़ा हो, और जो आपकी पृष्ठभूमि की पारदर्शिता से मेल खाता हो।

संपादित करें: IE6 + समर्थन के लिए वापस गिरने के लिए, आप png के लिए bkgd chunk निर्दिष्ट कर सकते हैं, यह एक रंग है जो सही अल्फा पारदर्शिता की जगह लेगा यदि यह समर्थित नहीं है। आप इसे उदाहरण के लिए जिम्प के साथ ठीक कर सकते हैं।


2
हाँ। rgba()IE 8. में रंग मानों का समर्थन नहीं किया गया है
पॉल डी। वेट

11
संभावित समस्या से बचने के लिए, इसके अलावा किसी भी आकार का उपयोग करें 1x1: stackoverflow.com/questions/7764751/…
तीसवाँ

43
2003 में स्वीकार्य होगा, लेकिन 2013 में नहीं। पुराने IE में कुछ नकली समर्थन के लिए या तो -ms-filter, या, बेहतर अभी तक, बस इसे अनदेखा करें। का उपयोग कर IE8- लायक लोग बॉर्डर की त्रिज्या, पारदर्शी पृष्ठभूमि आदि नहीं देख कर दंडित करने की
एव्जेनी

21
@ EugeneXa मैं अपने ग्राहकों के लिए काम करता हूं, न कि दूसरे तरीके से। यदि वे IE8 का उपयोग करते हैं, तो मैं इसका समर्थन करता हूं। संभावित ग्राहकों को दंडित करना अच्छा व्यवसाय नहीं है।
एली

14
@EugeneXa यह मेरी साइटों पर 10% के करीब है, और वे अक्सर अच्छे ग्राहक हैं। यहाँ एक भी सही उत्तर नहीं है। गणित करो और पता करो कि तुम्हारे लिए क्या काम करता है। 6% भी कुछ साइटों के लिए भारी हो सकता है! कोई भी उपयोगकर्ता दंडित होने के योग्य नहीं है। मुझे लगता है कि आपको उस रवैये पर पछतावा होगा।
एली

241

IE में RGBA और HSLA पृष्ठभूमि का अनुकरण करने के लिए, आप एक ग्रेडिएंट फ़िल्टर का उपयोग कर सकते हैं, एक ही शुरुआत और अंतिम रंग के साथ (अल्फा चैनल HEX के मूल्य में पहली जोड़ी है)

background: rgba(255, 255, 255, 0.3); /* browsers */
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#4cffffff', endColorstr='#4cffffff'); /* IE */

2
यह एक इलाज का काम करता है, दुर्भाग्य से यह काम करना बंद करने के लिए लगता है अगर तत्व गतिशील रूप से छिपा हुआ है और jQuery का उपयोग करके फिर से दिखाया गया है ...
jackocnr

rgba IE फ़िल्टर बहुत उपयोगी था और मुझे इसके लिए चारों ओर काम मिल रहा था>
यानी 7

फिल्टर के लिए 0.6 की अपारदर्शिता क्या है?
Si8

10
पारदर्शिता के लिए हेक्स कोड (पहली जोड़ी) यहां पाया जा सकता है: ( stackoverflow.com/questions/15852122/hex-transparency-in-colors )
user1794295

2
उन IE कस्टम हेक्स मूल्यों के लिए एक कैलकुलेटर है !
नीतोनफिर

14

मेरा मानना ​​है कि यह सबसे अच्छा है क्योंकि इस पृष्ठ पर अल्फा-पारदर्शी पृष्ठभूमि उत्पन्न करने में आपकी सहायता करने के लिए एक उपकरण है:

" क्रॉस ब्राउज़र अल्फा पारदर्शी बैकग्राउंड CSS (आरजीबीए) " (* अब आर्काइव.ओआरजी से जुड़ा)

#div {
    background:rgb(255,0,0);
    background: transparent\9;
    background:rgba(255,0,0,0.3);
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4cFF0000,endColorstr=#4cFF0000);
    zoom: 1;
}

और रीमेबर हमेशा फ़िल्टर में RGBA हेक्स कलर का उपयोग करें: eq # 004F80 # ed004F80
user956584

9

आईई 6- में पारदर्शी पीएनजी छवि काम नहीं करेगी, विकल्प हैं:

सीएसएस के साथ:

.transparent {

    /* works for IE 5+. */
    filter:alpha(opacity=30); 

    /* works for IE 8. */
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";

    /* works for old school versions of the Mozilla browsers like Netscape Navigator. */
    -moz-opacity:0.3; 

    /* This is for old versions of Safari (1.x) with KHTML rendering engine */
    -khtml-opacity: 0.3; 

    /* This is the "most important" one because it's the current standard in CSS. This will work in most versions of Firefox, Safari, and Opera. */  
    opacity: 0.3; 
}

या बस इसे jQuery के साथ करें:

// a crossbrowser solution
$(document).ready(function(){ 
    $(".transparent").css('opacity','.3');
});

24
पृष्ठभूमि अल्फा अस्पष्टता के समान नहीं है (यह बाल तत्व को पारदर्शी भी नहीं बनाता है)।
एलेक्सी स्मोलियाकोव

1
यह न तो प्रश्न का उत्तर दे रहा है और न ही CSS को jQuery (या सामान्य रूप से जावास्क्रिप्ट) के माध्यम से क्रॉसब्रोसर समाधान में लागू किया गया है।
15

7

हालांकि देर से, मुझे लगता है कि आज का इस्तेमाल किया था और एक बहुत ही उपयोगी php स्क्रिप्ट नहीं मिली यहाँ इतना जिस तरह से काम करता है RGBA की तरह, आप गतिशील रूप से एक png फ़ाइल बनाने के लिए अनुमति देगा।

background: url(rgba.php?r=255&g=100&b=0&a=50) repeat;
background: rgba(255,100,0,0.5);

स्क्रिप्ट यहां डाउनलोड की जा सकती है: http://lea.verou.me/wp-content/uploads/2009/02/rgba.zip

मुझे पता है कि यह हर किसी के लिए सही समाधान नहीं हो सकता है, लेकिन यह कुछ मामलों में विचार करने योग्य है, क्योंकि यह बहुत समय बचाता है और निर्दोष रूप से काम करता है। आशा है कि किसी की मदद करता है!


2
यह कैसे काम करता है - क्या rgba.php URL केवल उन ब्राउज़र द्वारा अनुरोध किया जाता है जो समर्थन नहीं करते हैं rgba? या क्या यह हमेशा सभी उपयोगकर्ताओं द्वारा अनुरोध किया जाता है, और बस नहीं दिखाया जाता है?
डैरेन कुक

मेरी उम्मीद है कि ब्राउज़र दूसरी पृष्ठभूमि को स्वचालित रूप से देखेगा और पहले को अनदेखा करेगा, इससे पहले कि वह अनुरोध करने का प्रयास करे। लेकिन, यह एक शिक्षित अनुमान है।
कुंडा

7

CSS में ज्यादातर सभी ब्राउज़र सपोर्ट RGBG कोड हैं लेकिन केवल IE8 और उससे नीचे का स्तर RGBa css कोड को सपोर्ट नहीं करता है। इसके लिए यहाँ समाधान है। समाधान के लिए आपको इस कोड का पालन करना चाहिए और यह अनुक्रम के साथ जाना बेहतर है अन्यथा आपको अपनी इच्छानुसार सही आउटपुट नहीं मिलेगा। इस कोड का उपयोग मेरे द्वारा किया गया है और यह ज्यादातर सही है। अगर यह सही है तो टिप्पणी करें।

.class
 {
        /* Web browsers that does not support RGBa */
        background: rgb(0, 0, 0);
        /* IE9/FF/chrome/safari supported */
        background: rgba(0, 0, 0, 0.6);
        /* IE 8 suppoerted */
        /* Here some time problem for Hover than you can use background color/image */
        -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#88000000, endColorstr=#88000000)";
        /* Below IE7 supported */
        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#88000000, endColorstr=#88000000);
 }

5

आप अस्पष्टता को बदलने के लिए css का उपयोग करते हैं। IE के साथ सामना करने के लिए आपको कुछ इस तरह की आवश्यकता होगी:

.opaque {
    opacity : 0.3;
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
    filter: alpha(opacity=30);
}

लेकिन इसके साथ एकमात्र समस्या यह है कि इसका मतलब है कि कंटेनर के अंदर कुछ भी 0.3 अपारदर्शिता होगा। इस प्रकार आपको अपने HTML को एक अन्य कंटेनर में बदलना होगा, न कि पारदर्शी एक के अंदर, जो आपकी सामग्री रखता है।

अन्यथा png तकनीक, काम करेगी। सिवाय आपको IE6 के लिए एक फिक्स की आवश्यकता होगी, जो अपने आप में समस्याएं पैदा कर सकता है।


4
एक ब्राउज़र के विशिष्ट प्रकार का मामला बाकी की तरह काम नहीं करता है, और उस ब्राउज़र का प्रत्येक संस्करण उसी ब्राउज़र के अन्य संस्करणों की तरह काम नहीं कर रहा है ... केवल Microsoft इसे बहुत सफलतापूर्वक प्राप्त कर सकता है ...
क्लार्कबाय

3
@ पाओल डी। वाइट: ऐसी कई विशेषताएं हैं, जो ब्राउज़र प्रदान करती हैं इसके अलावा वे सामग्री कैसे प्रस्तुत करती हैं। युक्ति से विचलन करना (या नहीं होना चाहिए) एक विशेषता है।
बॉबी जैक

@ पाओल डी। वेट: ठीक है, मैं आपकी बात देख रहा हूं, लेकिन मेरा क्या मतलब है कि IE के विभिन्न संस्करण इतने अलग हैं कि मैं खुद को प्रत्येक संस्करण के लिए एक अलग स्टाइलशीट बनाने के लिए पाता हूं ... मेरे पास IE6, 7 और के लिए अलग-अलग स्टाइलशीट हैं। 8 ... फिर भी मेरे पास एफएफ / क्रोम / ओपेरा / सफारी के सभी के लिए केवल एक स्टाइलशीट है। @ बॉबी जैक: सेकंड ...
क्लार्कबॉय

@ लॉबी: ज़रूर, लेकिन IE 8 IE 7 या IE 6 से अधिक मानकों से विचलित नहीं है, निश्चित रूप से?
पॉल डी। वेट

@ क्लार्कबॉय: निश्चित। मुझे लगता है कि मेरे IE 8 स्टाइलशीट मेरे IE 6 स्टाइलशीट की तुलना में बहुत सरल की एक बिल्ली है। IE ब्राउज़रों में सबसे अजीब है, लेकिन यह धीरे-धीरे दूसरों के साथ संरेखित कर रहा है। फ़ायरफ़ॉक्स ने rgba()संस्करण 3 तक समर्थन नहीं किया , और ओपेरा ने संस्करण 10. तक इसका समर्थन नहीं किया
पॉल डी। वेइट

4

मुझे पार्टी के लिए देर हो रही है, लेकिन किसी और के लिए जो इसे ढूंढता है - यह लेख बहुत उपयोगी है: http://kilianvalkhof.com/2010/css-xhtml/how-to-use-rgba-in-ie/

यह ठोस लेकिन पारदर्शी रंग प्रदर्शित करने के लिए ढाल फिल्टर का उपयोग करता है।



2

rgbaIE में पृष्ठभूमि का उपयोग करने के लिए एक फॉलबैक है।

हमें फ़िल्टर प्रॉपर्टी का उपयोग करना होगा। वह उपयोग करता हैARGB

    background:none;
    -ms-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#33ffffff,endColorstr=#33ffffff);
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#33ffffff,endColorstr=#33ffffff);
    zoom: 1;

इसके लिए गिरावट है rgba(255, 255, 255, 0.2)

अपने #33ffffffअनुसार बदलो ।

कैसे की गणना करने के ARGBलिएRGBA


हमेशा के लिए आरजीबी RGBA कनवर्टर करने के लिए देख रहे हैं, धन्यवाद! web.archive.org/web/20131207234608/http://kilianvalkhof.com/…
जस्टिन

1

यह मेरे लिए IE8 में समस्या को हल करने के लिए काम किया:

-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=1)";

चियर्स


1

यह समाधान वास्तव में काम करता है, इसे आज़माएं। IE8 में परीक्षण किया गया

.dash-overlay{ 
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000)"; 
}

0

यह बहुत ही सरलता से आपको पहले आपको आरजीबी के रूप में बैकगाउंड देना होगा क्योंकि इंटरनेट एक्सप्लोरर 8 आरजीबी के बजाय आरजीबी का समर्थन करेगा और फिर यू को अपारदर्शिता देनी होगी filter:alpha(opacity=50);

background:rgb(0,0,0);
filter:alpha(opacity=50);

0

आईई एक्स सहित अधिकांश ब्राउज़रों के लिए यह एक पारदर्शिता समाधान है

.transparent {
    /* Required for IE 5, 6, 7 */
    /* ...or something to trigger hasLayout, like zoom: 1; */
    width: 100%; 

    /* Theoretically for IE 8 & 9 (more valid) */   
    /* ...but not required as filter works too */
    /* should come BEFORE filter */
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";

    /* This works in IE 8 & 9 too */
    /* ... but also 5, 6, 7 */
    filter: alpha(opacity=50);

    /* Older than Firefox 0.9 */
    -moz-opacity:0.5;

    /* Safari 1.x (pre WebKit!) */
    -khtml-opacity: 0.5;

    /* Modern!
    /* Firefox 0.9+, Safari 2?, Chrome any?
    /* Opera 9+, IE 9+ */
    opacity: 0.5;
}

0

सबसे अच्छा समाधान जो मुझे अब तक मिला है, वह डेविड जे मारलैंड ने अपने ब्लॉग में प्रस्तावित किया है , पुराने ब्राउज़रों में अस्पष्टता का समर्थन करने के लिए (IE+):

.alpha30{
    background:rgb(255,0,0); /* Fallback for web browsers that don't support RGBa nor filter */ 
    background: transparent\9; /* backslash 9 hack to prevent IE 8 from falling into the fallback */
    background:rgba(255,0,0,0.3); /* RGBa declaration for browsers that support it */
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4cFF0000,endColorstr=#4cFF0000); /* needed for IE 6-8 */
    zoom: 1; /* needed for IE 6-8 */
}

/* 
 * CSS3 selector (not supported by IE 6 to IE 8),
 * to avoid IE more recent versions to apply opacity twice
 * (once with rgba and once with filter)
 */
.alpha30:nth-child(n) {
    filter: none;
}

0

बहुत खोज करने के बाद, मुझे निम्नलिखित समाधान मिला जो मेरे मामलों में काम कर रहा है:

.opacity_30{
    background:rgb(255,255,255); /* Fallback for web browsers that don't support neither RGBa nor filter */ 
    background: transparent\9; /* Backslash 9 hack to prevent IE 8 from falling into the fallback */
    background:rgba(255,255,255,0.3); /* RGBa declaration for modern browsers */
    -ms-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4CFFFFFF,endColorstr=#4CFFFFFF); /* IE 8 suppoerted; Sometimes Hover issues may occur, then we can use transparent repeating background image :( */
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4CFFFFFF,endColorstr=#4CFFFFFF); /* needed for IE 6-7 */
    zoom: 1; /* Hack needed for IE 6-8 */
}

/* To avoid IE more recent versions to apply opacity twice (once with rgba and once with filter), we need the following CSS3 selector hack (not supported by IE 6-8) */
.opacity_30:nth-child(n) {
    filter: none;
}

* महत्वपूर्ण: RGB से ARGB (IE के लिए) की गणना करने के लिए, हम ऑनलाइन टूल का उपयोग कर सकते हैं:

  1. https://kilianvalkhof.com/2010/css-xhtml/how-to-use-rgba-in-ie/
  2. http://web.archive.org/web/20131207234608/http://kilianvalkhof.com/2010/css-xhtml/how-to-use-rgba-in-ie/
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.