2012-04-27 96 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打開網站,你會得到白色和灰色之間沒有任何漸變的清晰線條:

firefox screenshot

如果打開鍍鉻的網站,你會得到一個5px'ish灰色漸變其中白色結束,灰色開始:

chrome screenshot

如何讓這個顏色停止突然沒有顯示在webkit瀏覽器上的實際漸變,因爲它目前在Firefox上做?

乾杯 摹

+0

我還沒有嘗試過,但它可以幫助添加一個「顏色停止」在白色或灰色,並將其居中過渡? – reinder 2012-05-07 13:54:47

+0

你能告訴我一個樣本嗎? – Sotkra 2012-05-08 08:00:56

+1

我不明白你爲什麼在這裏使用CSS漸變。 – stewart715 2012-05-10 18:13:41

回答

2

從一些嘗試重現這個在測試情況下,出現的問題可能是WebKit的執行有困難計算html確切高度時,沒有直接規定高度。設置100%或固定像素高度的height似乎可以清除它。但我懷疑這是一個實際的解決方案。在我自己的使用中,我沒有注意到這是其他元素的問題,所以在html上使用線性漸變也許是特別的。

如果這是一個Webkit的錯誤,那麼你最好的解決方案可能是重做你的CSS,以便灰色背景可以應用到元素。很顯然,這是適應Webkit的一個重大變化,但它也會使背景與舊版本的IE兼容。

+0

我試過兩種身高:100%;和高度:1000px;對於HTML {},並沒有明顯的變化。我會繼續做測試 – Sotkra 2012-04-27 22:57:55

+1

@Sotkra當我測試它時,我看到了同樣的問題。它看起來更像是一個Webkit的bug,因爲Firefox處理它很好。 – 2012-04-28 00:24:19

+0

是的,它真的讓我感到驚訝。你見過webkit如何正確處理這些「原始」彩色中止的情況嗎? – Sotkra 2012-04-29 01:42:54

0

我認爲如果你想在webkit中實現從#fff到#eee的穩定轉換,你將不得不放棄漸變。如果你設置你的css是這樣的

html { 
    background: #eee; 
    } 

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

它會複製你想要實現使用漸變。 (見屏幕截圖)它也將跨瀏覽器兼容。我希望這有幫助。

enter image description here

+1

我知道,這個問題圍繞着線性梯度實現中的跨瀏覽器差異,而不是「如何實現x效應」。 – Sotkra 2012-05-06 16:21:20

2

這僅僅是WebKit的&壁虎之間的差異。不幸的是,在如此大的漸變尺寸下,它看起來像webkit採用「快速」路線渲染巨大的漸變(不要忘記漸變是瀏覽器生成的圖像),並且對它有些模糊。

嘗試使用background-position-y: 500px;強制漸變從webkit頂部開始500px。

見琴:http://jsfiddle.net/3ampp/

5

嘗試使用微軟的網站上的這個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 2012-05-13 04:41:29

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 2012-05-13 04:43:17

1

你試過嗎?

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

好吧,這裏的問題是webkit,但是...將520px添加到聲明的#eee部分不會產生預期的效果 – Sotkra 2012-05-13 04:43:00