IE 8でrgbaを使用したCSS背景の不透明度が機能しない


110

私はこのCSSを背景の不透明度に使用してい<div>ます:

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

Firefoxでは正常に機能しますが、IE 8では機能しません。どのように機能させるのですか?

回答:


73

1x1ピクセルより大きく(thirtydotに感謝)、背景の透明度に一致するpngを作成します。

編集:IE6 +サポートにフォールバックするには、pngにbkgdチャンクを指定できます。これは、サポートされていない場合に真のアルファ透明度を置き換える色です。gimpなどで修正できます。


2
うん。rgba()色の値は、IE 8でサポートされていない
ポールD.ウェイト

11
潜在的な問題を回避するには、以外の任意のサイズを使用1x1stackoverflow.com/questions/7764751/...
thirtydot

43
2003年には受け入れられますが、2013年には受け入れられません。古いIEでややシミュレートされたサポートのために-ms-filterを使用するか、さらには、無視してください。IE8を使用している人々
Evgeny

21
@EugeneXa私は顧客のために働いており、逆ではありません。IE8を使用している場合は、サポートします。潜在的な顧客を罰することは良いビジネスではありません。
Eli

14
@EugeneXa私のサイトでは10%近くですが、彼らはしばしば良い顧客です。ここに単一の正しい答えはありません。数学をして、何がうまくいくかを考えてください。一部のサイトでは6%でも巨大になる可能性があります!罰せられるに値するユーザーはいません。その態度は後悔するでしょう。
Eli

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 '26

RGBA IEフィルターは非常に有用であったと私は> IE7のために周りのことがGETの仕事だった
codingbbq

フィルターの不透明度0.6とは何ですか?
Si8、2014

10
透明度の16進コード(最初のペア)は、次の場所にあります:(stackoverflow.com/questions/15852122/hex-transparency-in-colors
user1794295

2
これらのIEカスタム16進値の計算機があります。
nietonfir 2015年

14

このページにはアルファ透明な背景を生成するのに役立つツールがあるので、これが最高だと思います。

クロスブラウザーアルファ透明背景CSS(rgba)(*現在、archive.orgにリンクされています)

#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 16進カラーを使用します:eq#004F80は#ed004F80です
user956584

9

透明なpng画像はIE 6では機能しません。代わりの方法は次のとおりです。

CSSを使用:

.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
背景アルファは不透明度と同じではありません(子要素も透明になりません)。
Alexey Smolyakov 2012

1
これは質問に答えるものではなく、CSSがjQuery(またはJavaScript全般)を介してクロスブラウザーソリューションに適用されることもありません。
mystrdat 2012

7

遅くとも、私は今日それを使用する必要があり、rgbaの動作のように動的にpngファイルを作成できる非常に便利なphpスクリプトをここで見つけました。

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か?rgba.phpのURLは、サポートしていないブラウザからのみ要求されますか?または、常にすべてのユーザーから要求され、単に表示されませんか?
ダレン・クック

ブラウザが2番目の背景を自動的に表示し、1番目の背景を無視して、要求を試みる前に、私の願いです。しかし、それはせいぜい知識に基づいた推測です。
2013年

7

ほとんどすべてのブラウザーがCSSでRGBaコードをサポートしていますが、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
1つのブラウザーが他のブラウザーのように動作しない典型的なケース、およびそのブラウザーの各バージョンが同じブラウザーの他のバージョンのように動作しない... Microsoftだけがこれを非常にうまく達成できました...
ClarkeyBoy

3
@Paul D. Waite:ブラウザーがコンテンツをレンダリングする方法以外にも、ブラウザーが提供する多くの機能があります。仕様から逸脱することは機能ではありません(またはすべきではありません)。
ボビージャック

@Paul D. Waite:わかりましたが、IEのバージョンによって動作異なるため、バージョンごとに異なるスタイルシートを作成する必要があるということです... IE6、7、および8 ...それでも、FF / Chrome / Opera / Safariのスタイルシートは1つしかありません。@ボビー・ジャック:出向中...
ClarkeyBoy

@ボビー:もちろん、IE 8はIE 7またはIE 6よりも標準から逸脱していませんか?
ポールD.ウェイト

@ClarkeyBoy:確かに。私のIE 8スタイルシートは、私のIE 6スタイルシートよりもはるかに単純です。IEは最も奇妙なブラウザーですが、徐々に他のブラウザーと連携しています。Firefoxはrgba()バージョン3までサポートせず、Operaはバージョン10までサポートしませんでした
Paul D. Waite


2

rgbaIEでバックグラウンドを使用するには、フォールバックがあります。

filterプロパティを使用する必要があります。それは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


ARGBから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

Internet Explorer 8はrgbaの代わりにrgbをサポートするため、最初にrgbとしてバックグラウンドを指定する必要があります。次に、uのような不透明度を指定する必要があります。 filter:alpha(opacity=50);

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

0

これは、IE xを含むほとんどのブラウザー向けの透過性ソリューションです。

.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 6+)の不透明度をサポートするために、David J Marlandのブログで提案された解決策です。

.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;
}

*重要: RGBAからIEのARGBを計算するには、オンラインツールを使用できます。

  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/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.