2013-06-18 65 views
6

我試圖創建一個從頂部的線性漸變像底部:CSS背景的線性漸變從上到下

Gradient I want!

不幸的是我得到的是:

Gradient I get

以下是我的HTML:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Test Page</title> 
    <link rel="stylesheet" href="test.css"> 
</head> 
<body> 
     Hi 
</body> 
</html> 

我的CSS:

body{ 
    background: linear-gradient(0deg, white, blue 80%) ; 
} 

如果我做90deg,而不是0deg然後我得到這樣的:

Gradient with 90deg

我需要這個梯度 - 但它應該由90度,即從頂部旋轉到底部而不是從左到右。我很好奇爲什麼0deg似乎給了類似於重複漸變的東西。

我已經使用了瀏覽器,Firefox 21和Chrome 27.我很感激任何建議。

+0

什麼是你身體的計算身高?嘗試將CS​​S身體設置爲100%身高 – jtheman

回答

12

嘗試設置在<html>背景,而 - 可能是更容易管理。然後給它一個height:100%;以及它肯定延伸整個頁面。

我也將它設置爲no-repeat所以你只有一個漸變,而不是從底部開始,當你有更長的內容。

html{ 
    height:100%; 
    background: linear-gradient(0deg, white, blue 80%) no-repeat; 
} 

http://jsfiddle.net/daCrosby/nEQeZ/1/

編輯

fr13d在評論中指出,將在html梯度時,梯度將停在第一頁的任何滾動前的底部。也就是說,當您滾動時,漸變會被截斷(如果背景顏色與漸變的較低顏色不同,則會顯得很明顯)。解決此

一種方法是把造型上body代替:

body{ 
    height:100%; 
    background: linear-gradient(0deg, yellow, blue 80%) no-repeat; 
} 

http://jsfiddle.net/daCrosby/nEQeZ/117/

+0

這工作完美** DACrosby **。謝謝。 –

+0

有點遲了,但看起來如果你的''包含足夠的內容來延伸超過屏幕的底部,一旦你向下滾動,那麼srcolls進入視圖的新部分不再有背景了。 (因爲你漸變的底部是白色的,所以你的情況並不重要。) – fr13d

+0

好點@ fr13d,我已經更新了我的答案 – DACrosby

1

一種方法是給<body><html>元素一個明確的高度,因爲前者現在沒有,也沒有任何內容:

http://jsfiddle.net/qL9mg/1/

+0

感謝** Adrift **。這似乎有點工作。如果你沒有使用'html',即只是'body',那麼它不起作用。爲什麼你需要同時指定'body'和'html'? –

+0

另外,如果您使用滾動條滾動到底部,則它具有深藍色線條。我們能避免嗎? –

+1

@ O.O:因爲「」不知道100%身高是指*,因爲百分比值總是相對於另一個值,例如,其父母的身高。 – Adrift

0

試試這個:

html { 
    height: 100%; 
    background: linear-gradient(0deg, white, blue 80%) ; 
} 

body { 
    height: 0%; 
} 
0

我同意從@DACrosby解決方案,但建議用「固定」來擴展背景。在這種情況下,您的背景將保持原樣,並且整個站點的漸變不僅僅位於頂部。

background: linear-gradient(0deg, red, blue 80%) fixed no-repeat;