2012-04-27 12 views
2

に異なる働きを参照してください。ほとんど終了し、背景色の変更場所をブックカバーにwww.get-offit.comCSS3の線形グラデーションカラーストップは、WebKitの

ゴー:

我々は持っている:

html { 
background: -moz-linear-gradient(top, #FFFFFF 500px, #EEEEEE 0px); 
background: -ms-linear-gradient(top, #FFFFFF 500px, #EEEEEE 0px); 
background: -o-linear-gradient(top, #FFFFFF 500px, #EEEEEE 0px); 
background: -webkit-gradient(linear, 0 0, 0 100%, color-stop(5, #FFFFFF), to(#EEEEEE)); 
background: -webkit-linear-gradient(top, #FFFFFF 500px, #EEEEEE 0px); 
background: linear-gradient(top, #FFFFFF 500px, #EEEEEE 0px); 

}

Firefoxを使用してサイトを開くと、グラデーションが何も起こらずに白とグレーの間に明確なカットラインが得られます。

あなたがChromeでサイトを開くと白の両端、あなたが5px'ishグレーのグラデーションを得る

firefox screenshot

と灰色が開始されます:

ように私はそれを作るにはどうすればよい

chrome screenshot

現在のFirefoxのようにWebkitブラウザで実際のグラデーションを表示せずに色が突然停止しますか?テストケースでこれを再現するために、いくつかの試みから乾杯 G

+0

私はそれを試したことはありませんが、白や灰色の「カラーストップ」を追加して、トランジションの中心に置くことができますか? – reinder

+0

あなたはそれのサンプルを私に見せることができますか? – Sotkra

+1

私はここでCSSグラデーションを使用している理由を理解していません。 – stewart715

答えて

2

が、問題は直接指定なし高さがないときWebKitの実装は、トラブルhtmlの正確な高さを計算しているのかもしれ表示されます。 heightを100%または固定ピクセルの高さに設定すると、それがクリアされるようです。しかし、私はそれが実用的な解決策であるとは思わない。自分自身ではこれを他の要素の問題として気付いていないので、htmlの線形グラデーションを使用するのが特にそうです。

Webkitのバグの場合は、灰色の背景を要素に適用できるようにCSSを修正することをお勧めします。明らかに、これはWebkitに対応する大き​​な変更ですが、IEの古いバージョンと互換性のあるバックグラウンドも作成します。

+0

私は両方の高さを試しました:100%;高さ:1000px。 html {}の場合、目に見える変化はありません。私はテストを続けます – Sotkra

+1

@Sotkra私はそれをテストしたときに同じ問題が発生していました。 Firefoxがそれをうまく処理して以来、Webkitのバグかもしれないように見えています。 –

+0

ええ、本当に私は不思議に思っています。 Webkitがこれらの種類の「生の」色の停止を適切に処理するケースを見たことがありますか? – Sotkra

0

ウェブキットで#fffから#eeeへの固体移行を達成したい場合は、グラデーションを脇に置かなければならないと思います。このようなCSSを設定した場合、

html { 
    background: #eee; 
    } 

    body { 
     background: #fff; 
     height: 500px; 
     } 

グラデーションを使用して達成しようとしていることを複製します。 (スクリーンショットを参照)それはまた、クロスブラウザと互換性があります。私はこれが役立つことを願っています

enter image description here

+1

この質問は、「どのようにx効果を達成するのか」ではなく、直線勾配の実装におけるクロスブラウザの違いを中心に展開されています。 – Sotkra

2

これはWebKitの&ヤモリの間だけの違いです。残念なことに、このような大きなグラデーションサイズでは、Webkitは巨大なグラデーションを描画するための「高速」なル​​ートをとるように見えます(グラデーションはブラウザで生成された画像です)。

background-position-y: 500px;を使用して、Webkitの上部からグラデーションを500pxから開始するようにしてください。

はフィドルを参照してください:http://jsfiddle.net/3ampp/

5

は、Microsoft社のサイト(うん、マイクロソフト)で、このCSSのツールを使用してみてください:

http://ie.microsoft.com/testdrive/graphics/cssgradientbackgroundmaker/default.html

それはクロスブラウザのCSSコード(IEだけでなく)を生成するのに役立ちますし、グラディエント効果を少し変えることで便利になるかもしれません。グラデーションポイントを追加したり、異なる色を試したりすることもできます。

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

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

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

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

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

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

引用されたWebkitの例が意図したとおりに動作しない – Sotkra

0

これは、すべてのブラウザで私の作品:

html { 
background: -moz-linear-gradient(top, #FFFFFF 500px, #EEEEEE 0px); 
background: -ms-linear-gradient(top, #FFFFFF 500px, #EEEEEE 0px); 
background: -o-linear-gradient(top, #FFFFFF 500px, #EEEEEE 0px); 
background: -webkit-linear-gradient(#FFFFFF 500px, #EEEEEE 0px); 
background: linear-gradient(top, #FFFFFF 500px, #EEEEEE 0px); 
} 

勾配はあなたが達成しようとしている効果には必要ありませんが、ここで

はオンラインツールからのコードサンプルです。

+0

細かいところで – Sotkra

1

これを試しましたか?

background: -moz-linear-gradient(top, #FFFFFF 500px, #EEEEEE 520px); 
+0

を読んでください。ここでの問題はウェブキットですが、宣言の#eee部分に520pxを追加すると意図した効果が得られません – Sotkra

0

egidが述べたように、クロムはグラデーションを描画するための高速なルートをとっています。クールなアニメーションデモンストレーションについては、this SO questionthis penを参照してください。

関連する問題