Internet Explorer 9のグラデーション


111

IE9内のグラデーションのベンダープレフィックスを知っている人はいますか?それとも、まだ独自のフィルターを使用しているはずですか?

他のブラウザについて私が持っているのは:

background-image: -moz-linear-gradient(top, #444444, #999999); /* FF3.6 */
background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #444444),color-stop(1, #999999)); /* Saf4+, Chrome */
filter:  progid:DXImageTransform.Microsoft.gradient(startColorStr='#444444', EndColorStr='#999999'); /* IE6,IE7 */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#444444', EndColorStr='#999999')"; /* IE8 */

おまけとして、誰もがOperaのベンダープレフィックスも知っていますか?


回答を選択しましたが、これは現時点でのみ意味があります。これが変更された場合、誰かがスレッドを更新できますか?とても有難い。
スニファー

完全に。しかし、IE 9がグラデーションを実装するかどうかは、ベータ版なので疑問です。
ポールD.ウェイト

5
IE9はグラデーションをサポートしていませんが、IE10はサポートしています。
Catch22、2011

4
IEはすべてひどいブラウザであり、インラインブロックをサポートしていません。位置の値が理由もなく壊れているため、勾配のサポートはありません。すべてが地味なので遅くなります。準標準ブラウザをサポートする時間。個人的に、私は何年もの間、IEユーザーが私のページを閲覧するのを完全に阻止しており(実際のブラウザーを取得するように指示しています)、売り上げを失うことはありません。調査を行うと、IEアカウントがすべてのインターネットトラフィックの5%未満、売上高の1%未満であることがわかります。なぜ私たちはそれをサポートしているのですか?

12
ダン、数値がどこから来ているのか興味があります。IEがトラフィックの5%未満であることを示す単一のソースが見つかりません。
ジェイミーテイラー

回答:


44

IE9ベータ1以降、独自のフィルターを使用する必要があります。


2
css3please.comによると、IE10はCSSグラディエントをサポートするために見えます。これは朗報です...
スニファー

css3please.comは私の解決策を見つけるのに役立ちました。ありがとう
2013

57

私はパーティーに少し遅れるように見えますが、ここにいくつかのトップブラウザの例があります:

/* IE10 */ 
background-image: -ms-linear-gradient(top, #444444 0%, #999999 100%);

/* Mozilla Firefox */ 
background-image: -moz-linear-gradient(top, #444444 0%, #999999 100%);

/* Opera */ 
background-image: -o-linear-gradient(top, #444444 0%, #999999 100%);

/* Webkit (Safari/Chrome 10) */ 
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #444444), color-stop(1, #999999));

/* Webkit (Chrome 11+) */ 
background-image: -webkit-linear-gradient(top, #444444 0%, #999999 100%);

/* Proposed W3C Markup */ 
background-image: linear-gradient(top, #444444 0%, #999999 100%);

ソース:http : //ie.microsoft.com/testdrive/Graphics/CSSGradientBackgroundMaker/Default.html

注:これらのブラウザーはすべて、16進表記の代わりにrgb / rgbaもサポートしています。


10
IE10をまだ主要なブラウザーとは考えていません。
David Murdoch

3
@DavidMurdochは技術的には真ですが、CSSに所有権の拡張を追加しないことは意味がありません。結局のところ、IE10は主要なブラウザーになる運命にあります。
ピア

4
@RobotsushiはIE9の質問には回答しませんが(選択した回答が回答するため、おそらくそれが選択された理由です)、この質問は「インターネットエクスプローラーcss勾配」のGoogle結果の最初のページにあるため、ありません。 IE10がWindows 7にほぼ対応できるようになったため、ここで何か便利なものを使用することに害がある
Kevin Arthur

FirefoxとOperaの最新バージョンはW3C標準をサポートしています。(私はFirefox 7およびWindows 7のOpera 12.14でテストしました)
JayVee

2
これは、IE9に対応する質問に対するトップ投票の回答であるため、IE9のサポートが含まれるように末尾にfilter:を追加する必要があります。
Joel Coehoorn 2013年

46

最適なクロスブラウザソリューションは

background: #fff;
background: -moz-linear-gradient(#fff, #000);
background: -webkit-linear-gradient(#fff, #000);
background: -o-linear-gradient(#fff, #000);
background: -ms-linear-gradient(#fff, #000);/*For IE10*/
background: linear-gradient(#fff, #000);
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#ffffff', endColorstr='#000000');/*For IE7-8-9*/ 
height: 1%;/*For IE7*/ 

37

IE9は現在CSS3グラデーションのサポートを欠いています。ただし、これはPHPを使用して代わりにSVG(垂直線形)グラデーションを返す優れた回避策ソリューションであり、スタイルシートでデザインを維持できます。

<?php

$from_stop = isset($_GET['from']) ? $_GET['from'] : '000000';
$to_stop = isset($_GET['to']) ? $_GET['to'] : '000000';

header('Content-type: image/svg+xml; charset=utf-8');

echo '<?xml version="1.0"?>
';

?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%">
    <defs>
        <linearGradient id="linear-gradient" x1="0%" y1="0%" x2="0%" y2="100%">
            <stop offset="0%" stop-color="#<?php echo $from_stop; ?>" stop-opacity="1"/>
            <stop offset="100%" stop-color="#<?php echo $to_stop; ?>" stop-opacity="1"/>
        </linearGradient>
    </defs>
    <rect width="100%" height="100%" fill="url(#linear-gradient)"/>
</svg>

サーバーにアップロードして、次のようにURLを呼び出します。

gradient.php?from=f00&to=00f

これは、次のようなCSS3グラデーションと組み合わせて使用​​できます。

.my-color {
    background-color: #f00;
    background-image: url(gradient.php?from=f00&to=00f);
    background-image: -webkit-gradient(linear, left top, left bottom, from(#f00), to(#00f));
    background-image: -webkit-linear-gradient(top, #f00, #00f);
    background-image: -moz-linear-gradient(top, #f00, #00f);
    background-image: linear-gradient(top, #f00, #00f);
}

IE9以下をターゲットにする必要がある場合でも、古い独自の 'filter'メソッドを使用できます。

.ie7 .my-color, .ie8 .my-color {
    filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ff0000", endColorStr="#0000ff");
}

もちろん、PHPコードを修正してグラデーションのストップを追加したり、より洗練されたもの(放射状グラデーション、透明度など)にしたりできますが、これはこれらの単純な(垂直)線形グラデーションに最適です。


エレガントなソリューション。参考:をサポートするブラウザでSVGがダウンロードされないことを確認しましたlinear-gradient
ジョナサンクロス

作成されたsvgファイルをキャッシュする方法はあるのでしょうか。
マイクコルメンディ2014年

より堅牢な質問は、キャッシュされたファイルを要求する場合と、毎回ファイルストリームを生成する場合の時間とサーバー負荷の両方でのパフォーマンスを調べることです。
マイクコルメンディ2014年

1
PHPは、UI設計に関する知識や助けがあってはなりません。クライアントのニーズをクライアントで維持します。
Alex White

11

すべてのブラウザーのグラデーションに使用するコード:

background: #0A284B;
background: -webkit-gradient(linear, left top, left bottom, from(#0A284B), to(#135887));
background: -webkit-linear-gradient(#0A284B, #135887);
background: -moz-linear-gradient(top, #0A284B, #135887);
background: -ms-linear-gradient(#0A284B, #135887);
background: -o-linear-gradient(#0A284B, #135887);
background: linear-gradient(#0A284B, #135887);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0A284B', endColorstr='#135887');
zoom: 1;

これをIEで機能させるには、高さを指定するか、要素zoom: 1に適用する必要がありますhasLayout


更新:

以下に、LESSユーザーのLESSミックスイン(CSS)バージョンを示します。

.gradient(@start, @end) {
    background: mix(@start, @end, 50%);
    filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorStr="@start~", EndColorStr="@end~")";
    background: -webkit-gradient(linear, left top, left bottom, from(@start), to(@end));
    background: -webkit-linear-gradient(@start, @end);
    background: -moz-linear-gradient(top, @start, @end);
    background: -ms-linear-gradient(@start, @end);
    background: -o-linear-gradient(@start, @end);
    background: linear-gradient(@start, @end);
    zoom: 1;
}

LESSユーザーとして、私はグラデーションをIE9でも機能させる方法を探していました。私は、SVGを生成する方法を詳述したブログ記事を見つけた:blog.philipbrown.id.au/2012/09/...
ジェームス・ロング

6

Operaは、他のCSS機能だけでなく、グラデーションのサポートを含むビルドをすぐに利用できるようになります。

W3C CSSワーキンググループは、CSS 2.1でさえ完成していません。間もなく終了する予定です。CSS3は正確にモジュール化されているため、仕様全体ではなく、実装までのモジュールをより速く移動できます。

すべてのブラウザ会社は、異なるソフトウェアサイクルの方法論、テストなどを使用しています。したがって、プロセスには時間がかかります。

CSS3で何かを使用している場合、「プログレッシブエンハンスメント」と呼ばれるものを実行していることを、多くの読者がよく知っていると思います。サポートが最も多いブラウザが最高のエクスペリエンスを実現します。それ以外の部分は「優雅な低下」です。つまり、ブラウザがモジュールまたはモジュールの一部を実装するまでは、エクスペリエンスは快適ですが、おそらく最良または最も魅力的ではありません。

これは非常に奇妙な状況を生み出し、残念ながらフロントエンドの開発者は、実装のタイミングの不整合によって非常にイライラします。したがって、どちらの側でも本当の挑戦です-あなたはブラウザ会社、W3C、またはさらに悪いことにあなた自身を責めますか?メンバーは自分のせい?君は?

もちろん違います。それは常にバランスのゲームであり、今のところ、私たちは業界として、そのバランスのポイントが実際にどこにあるのかを理解していません。それが進化技術で働く喜びです:)


4

IE9はまだCSSグラデーションをサポートしないことを理解しています。それは残念なことです。なぜなら、それは他の多くの素晴らしい新しいものをサポートしているからです。

IE3のすべてのバージョンにさまざまなCSS3機能(グラデーションを含むが、border-radiusとbox-shadowも含む)を最小限の手間でサポートさせる方法として、CSS3Pieを検討することをお勧めします。

CSS3PieはIE9で動作すると思います(プレリリースバージョンで試しましたが、現在のベータ版ではまだ試していません)。


Spudleyに感謝します。IE6〜8でCSS3Pieを使用していますが、IE9での使用を避けたいと思っていました。IE8のCSS3Pieスタイルを使用して、IEごとに個別のスタイルシートを用意しています。グラデーションが現在使用しているCSS3に欠けている唯一のものである限り、CSS3Pieを使用せずにIE9に別のスタイルシートを追加します。
スニファー

私はこの投稿を見ることすらできませんでした。答えを書いて、同じ情報でそれを削除するために投票しました。注:既知の問題に注意してください:css3pie.com/documentation/known-issues
NateDSaint

2

IE9については不明ですが、Operaはまだグラデーションをサポートしていないようです:

そのページには「勾配」はありません。

Opera以外のすべてのブラウザでCSSグラデーションを機能させる方法については、Robert Nymanによるすばらしい記事があります。

画像をフォールバックとして使用するように拡張できるかどうかはわかりません。


1
Operaは通常、標準の実装の最前線にいるため、これは私を驚かせます。答えのポールをありがとう。
スニファー

1
まだグラデーションが標準になっているとは思いません。プロセスを理解しているように、新しいCSS機能はブラウザーに実装され、最終的には標準で指定される傾向があります。私はWebKitチームが最初にCSSにグラデーションを実装したと考えています(Microsoftとその類のfilterものを数えない限り、私の本ではCSSとしての資格はありません)。Firefoxはこれに追随しましたが、W3C CSSドラフト仕様にはまだ何もないようです。google.co.uk/…を
Paul D. Waite

2

バージョン11以降、Operaは-o-ベンダープレフィックスを持つ線形グラデーションをサポートしています。Chris MillsがDev.Operaに関する記事を書いています:http ://dev.opera.com/articles/view/css3-linear-gradients/

放射状グラデーションはまだ作業中です(仕様とOperaの両方で)。


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