IE8で不透明度CSSが機能しない


143

CSSを使用してjQueryスライドダウンセクションのトリガーテキストを示しています。つまり、トリガーテキストにカーソルを合わせると、カーソルがポインターに変わり、トリガーテキストの不透明度が低下して、テキストにクリックアクションがあることが示されます。 。

これはFirefoxとChromeでは問題なく動作しますが、IE8では不透明度は変わりません。

さまざまなCSS設定を試しましたが、成功しませんでした。

例えば

HTML:

<h3 class="slidedownTrigger">This is the trigger text</h3>

CSS:

.slidedownTrigger
{
    cursor: pointer;
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";
    filter: alpha(opacity=75);
    -khtml-opacity: 0.75;
    -moz-opacity: 0.75;
    opacity: 0.75;
}

IEが不透明度を変更するのを止めているのは何ですか?注:私はこれをさまざまな異なる要素で試し、CSSステートメントの順序を入れ替え、IEのものだけを使用しました。私も使ってみました

-ms-filter: "alpha(opacity=75)";

しかし、成功しませんでした。

IE8で不透明度の変更を機能させるために必要なものが不足しています。

何か案は?


この関連/重複質問にはあなたの答えがあると思います。 stackoverflow.com/questions/859000/opacity-in-web-pages
ジェフマーティン

私はその質問を見ました-問題は答えです:<br> <br>&nbsp;&nbsp; フィルター:alpha(opacity = 50); / * Internet Explorer / <br>&nbsp;&nbsp; 不透明度:0.5; / fx、safari、opera、chrome * / <br>&nbsp;&nbsp; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity = 50)"; / * IE8 * / <br> <br>動作しません(もう一度確認するためにもう一度試しました)。黒で大胆なh3に適用しました。FirefoxとChromeでは、不透明度の設定は期待どおりに灰色の見出しに変わりますが、IE8では黒のままです。

おっと-コメントでHTMLを使用できないことに気づきませんでした-しかし、私が言おうとしていることがわかると思います

単色のdivだけでこれらのスタイルを試した場合、それらは機能しますか?おそらく、他のCSSが競合している可能性があります。
ジェフマーティン

良いですね。はい-単純なdivを実行するときに、高さと幅を設定し、背景色を赤に設定します。これらの不透明度設定を使用すると、IE8で動作します。半透明になります。私は問題が何であるかを見るのに苦労しています。私はスタイルシートの他の部分の不透明度を変更していないので、IEでのみそれと競合する可能性があるとは思えません。

回答:


65

これがまだ8に当てはまるかどうかはわかりませんが、歴史的にIEは「レイアウト」のない要素にいくつかのスタイルを適用していません。

参照:http : //www.satzansatz.de/cssd/onhavinglayout.html


9
IEは、「レイアウト」のない要素にいくつかのスタイルを適用しません。
Azeem.Butt 09

4
すごい!ありがとう。それが問題でした。私が不透明度を調整しようとしていた要素(たとえばh3)は「レイアウト」を持っていませんでした。私がそれらをいくつか与えたら、不透明度は機能しました。幅を追加するだけでした:100%; h3へ。私を正しい方向に向けてくれてありがとう。ただし、Internet Explorerがこれを行うことは(バグがないとしても)気が狂っているようです。

51
IEは多くの要素に多くのスタイルを適用しません。
danwellman 2012

1
@danwellmanは、他の多くの「楽しい」ことも行います。わーい。
dudewad 14

興味深いのは、IE7が「レイアウト」を必要としないことです。高さが0の要素にレスポンシブな背景画像を使用padding-bottom: 100%しています。IE8では、明示的な高さを設定するまで不透明度は有効になりませんでした。IE7はこれを必要としません。
コウト2017年

158

これらを設定すること(私が書いたとおり)は、必要なときに役立ちました。

-moz-opacity: 0.70;
opacity:.70;
filter: alpha(opacity=70);

6
おかげで、私は「filter:alpha(opacity = 70);」と信じています。IE <8用です。ただし、IE8では(私にとって)機能しません(チェックしたばかりです)。-moz-opacityは今ではかなり機能しなくなっていると思います。不透明度は標準的な方法です。つまり、当然、Microsoftはその方法を使用しませんでした(簡単すぎる)。

15
「不透明度」と「フィルター」を設定するだけで、FF4とIE8の両方で機能します。-moz-opacityは必要ありませんでした。
demoncodemonkey

1
@Gabriel McAdams:フィルター:alpha(opacity = 70); 動作しました(ただしIE 8のみ)
Poonam Bhatt '11

@ガブリエルそれは御馳走を働いた!IE 7/8で不透明度の問題がなくなるはずです。
MJCoder 2013

1
より具体的な情報:実際には、透明度を削除するメソッドはfadeInです。
tmorell 2013年

49

最初に標準に準拠したブラウザのOpacityを設定し、次にIEのさまざまなバージョンを設定する必要があります。例を参照してください:

しかし、この不透明度コードはie8では機能しません

.slidedownTrigger
{
    cursor: pointer;
    opacity: .75; /* Standards Compliant Browsers */
    filter: alpha(opacity=75); /* IE 7 and Earlier */
    /* Next 2 lines IE8 */
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=75);
}

Firefoxは標準に準拠したブラウザであり、その行は不要になったため、-mozを削除したことに注意してください。また、-khtmlが廃止されたため、そのスタイルも削除しました。

さらに、IEのフィルターはw3c標準に検証されないため、ページを検証する場合は、以下のようなif IEステートメントを使用して、標準スタイルシートをIEスタイルシートから分離します。

<!--[if IE]>
<link rel="stylesheet" type="text/css"  href="http://www.mysite.com/css/ie.css" />
<![endif]-->

IEの癖を分離すると、サイトは問題なく検証されます。


3
「不透明度」と「フィルター」を設定するだけで、FF4とIE8の両方で機能します。「/ *次の2行IE8 * /」というセクションは不要でした。
demoncodemonkey

3
@demoncodemonkey:正解です。インストールされているバージョンによって異なります。最大の互換性が必要な場合は、それらすべてをお勧めします。
ケビンフロリダ州

正解ですが、「Internet Explorer 7と8の両方のユーザーがフィルターを確実に使用できるようにするには、上記の両方の構文を含めることができます。パーサーの特殊性のため、古い構文の前に更新された構文を最初に含める必要があります。フィルタが互換表示で適切に機能するため(これは既知のバグであり、IE8の最終リリース時に修正される予定です)。CSSスタイルシートの例: "(ソース:リンク
zrathen

@Kevin「最大の互換性が必要な場合は、それらすべてをお勧めします」。それでは、-moz-opacityを削除すべきではありませんでしたよね?
2013年

-ms-filterには引用符は必要ありません。
thdoan 2013年

17

どうやらアルファ透明度はIE 8のブロックレベル要素でのみ機能します。ディスプレイを設定:ブロック。


17

を使用display: inline-block;してIE8でこの問題を解決します。

FWIWは、opacity: 0.75すべての標準準拠ブラウザで動作します。


5

CSS

私はCSS-Tricksから以下を使用していました:

.transparent_class {
  /* IE 8 */
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";

  /* IE 5-7 */
  filter: alpha(opacity=50);

  /* Netscape */
  -moz-opacity: 0.5;

  /* Safari 1.x */
  -khtml-opacity: 0.5;

  /* Good browsers */
  opacity: 0.5;
}

方位磁針

ただし、より良い解決策はOpacity Compass mixinを使用することです。必要なのは@include opacity(0.1);それを実行することだけであり、ブラウザ間の問題に対応します。ここで例を見つけることができます。



2

上記の答えはどれもうまくいきませんでしたので、代わりにDIVタグに透明な背景画像を指定しました。


1

このコードは機能します

filter: alpha(opacity = 50); zoom:1;

これを機能させるには、ズームプロパティを追加する必要があります。


1

ポリフィルを追加して、IE6-8でネイティブの不透明度の使用を有効にすることもできます。

https://github.com/bladeSk/internet-explorer-opacity-polyfill

これは、jQueryやその他のライブラリを必要としないスタンドアロンのポリフィルです。インラインスタイルでは機能しない小さな警告がいくつかあります。不透明度のポリフィルが必要なスタイルシートの場合は、同じ生成元のセキュリティポリシーに準拠する必要があります。

使い方は簡単です

<!--[if lte IE 8]>
    <script src="jquery.ie-opacity-polyfill.js"></script>
<![endif]-->

<style>
    a.transparentLink { opacity: 0.5; }
</style>

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