JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

Internet Explorer 8でグレースケールフィルターを適用し、PNG画像の黒縁を解消する方法

IE8でフィルターを使用する際の重要なポイント

Internet Explorer 8で複数のフィルター効果(グレースケール変換やグラデーションなど)を同時に適用したい場合、各フィルターを個別のプロパティとして指定すると正常に動作しないことがあります。すべてのフィルターは、1つのfilter呼び出しの中にまとめて記述する必要があります。

基本的なフィルターの記述方法

画像や要素をグレースケール表示にするには、以下のようにBasicImageフィルターのgrayscaleプロパティを「1」に設定します。

progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)

CSSでの実装例

実際のスタイルシートには、次のように記述します。

.demo {
    background: transparent;
    -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF, endColorstr=#00FFFFFF)
    progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)"; /* IE8 */
    zoom: 1;
}

コードのポイント解説

  • -ms-filter プロパティ: IE8専用のベンダープレフィックス付きプロパティです。旧バージョンの「filter」とは異なり、値全体をダブルクォーテーションで囲んだ文字列として指定する点に注意してください。
  • gradient フィルター: startColorstrとendColorstrに完全な透明色(#00FFFFFF)を指定することで、背景を透過状態に保ちます。これにより、透過PNG画像の周囲に黒い縁が現れる問題を回避できます。
  • zoom: 1: 要素にhasLayoutを発生させ、フィルターが確実に適用されるようにするための指定です。IE特有のレンダリング不具合を防ぐ定番テクニックです。

このように複数のprogidをカンマではなく連結して1つの文字列内に並べることで、IE8でもグレースケール効果と透過処理を同時に実現できます。

  1. 【解決済み】Internet Explorer 11が応答しない・頻繁にクラッシュする時の対処法8選

    Internet Explorer(IE)は、Windows 10より前のすべてのWindows OSに標準搭載されていたインターネットブラウザです。Windows 10の登場とともにMicrosoft Edgeへと役割を引き継ぎましたが、IEは依然として十分に実用的なブラウザであり、今なお世界中の多くのユーザーに利用され続けています。IEの最終バージョンであるInternet Explorer 11は、Windows 7およびWindows 8/8.1に対応しており、前世代から大幅に改善された、総じて優秀なブラウザです。しかし、Internet Explorer 11は決して完璧ではありませ

  2. Internet Explorer 10 プレビュー版速報 ― 加速するブラウザ戦争の最前線

    同調圧力は確かに機能します。Googleが驚異的なスピードでバージョンアップを繰り返すなか、MozillaもMicrosoftも、理由の如何を問わずその流れに続いています。Firefox 5は思ったよりも早く登場するかもしれません。そして、製品をじっくり時間をかけて仕上げることで知られていたMicrosoftさえも、ブラウザのリリースサイクルを加速させ始めたのです。Internet Explorer 9が登場してまだ数週間しか経っていないにもかかわらず、すでにInternet Explorer 10のプレビュー版が公開されています。 そこで今回は、多くの有名テックサイトが取り上げているように、