web-dev-qa-db-ja.com

IE 8でrgbaを使用したCSSバックグラウンドの不透明度が機能しない

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

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

Firefoxでは正常に動作しますが、IE 8.では動作しません。どうすれば動作しますか?

109
Moon

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

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

72
MatTheCat

iEでRGBAとHSLAバックグラウンドをシミュレートするには、同じ開始色と終了色のグラデーションフィルターを使用できます(アルファチャネルはHEXの値の最初のペアです)

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

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

http://hammerspace.co.uk/2011/10/cross-browser-alpha-transparent-background-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;
}
14
ahgood

透明な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');
});
9
Thomas

遅くなりましたが、今日はそれを使用しなければならず、非常に便利なphpスクリプト here を見つけました。これにより、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

誰にとっても完璧なソリューションではないかもしれませんが、多くの時間を節約し、問題なく動作するため、場合によっては検討する価値があります。それが誰かを助けることを願っています!

7
Camilo Delvasto

ほとんどすべてのブラウザーが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);
 }
7
pratik1020

Cssを使用して、不透明度を変更します。 IEに対処するには、次のようなものが必要です。

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

しかし、これに関する唯一の問題は、コンテナ内のすべてのものが0.3の不透明度であることを意味することです。したがって、コンテンツを保持する透明なコンテナ内ではなく、別のコンテナを持つようにHTMLを変更する必要があります。

それ以外の場合、pngテクニックは機能します。 IE6の修正が必要な場合を除き、それ自体が問題を引き起こす可能性があります。

5
Coin_op

私はパーティーに遅れていますが、これを見つけた他の誰にとっても-この記事は非常に便利です: http://kilianvalkhof.com/2010/css-xhtml/how-to-use-rgba-in-すなわち/

グラデーションフィルターを使用して、ソリッドで透明な色を表示します。

4
Alex Harford

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

フィルタープロパティを使用する必要があります。 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を変更します。

ARGBRGBAの計算方法

2
shyammakwana.me

これは私にとってIE8の問題を解決するのに役立ちました:

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

乾杯

1
Guille

このソリューションは本当に機能します。試してみてください。 IE8でテスト済み

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

私がこれまでに見つけた最良の解決策は、古いブラウザ(IE 6+)で不透明度をサポートするために blog で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
clami219

これは、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
Ahmad

Internet Explorer 8はrgbaではなくrgbをサポートするため、背景をrgbとして指定する必要があります。その後、filter:alpha(opacity=50);のような不透明度を指定する必要があります。

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

多くを検索した後、私の場合に機能している次のソリューションを見つけました:

.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からARGB(for 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/
0
Reza Mamun