CSS3 漸變
CSS漸變是CSS3圖像模塊中添加的新類(lèi)型的圖像。
CSS漸變?cè)试S您在兩個(gè)或多個(gè)指定顏色之間顯示平滑過(guò)渡。
瀏覽器支持兩種類(lèi)型的漸變:
- linear, 用
linear-gradient()
函數(shù)定義, - radial, 用
radial-gradient()
函數(shù)定義.
CSS3線性漸變
要?jiǎng)?chuàng)建線性漸變,我們將起點(diǎn)和方向設(shè)置為角度。
我們還定義顏色停止。顏色停止是渲染平滑過(guò)渡的顏色。我們必須指定至少兩個(gè)停止顏色。
這里是一個(gè)線性漸變,從中心(水平)和頂部(垂直)開(kāi)始,并開(kāi)始藍(lán)色,過(guò)渡到白色。
<!DOCTYPE html>
<html>
<head>
<style>
#grad1 {width: 100px;height: 100px;border: 1px solid rgb(51, 51, 51);background: -moz-linear-gradient(top, red, white);background: -moz-linear-gradient(tobottom, red, white);background: -ms-linear-gradient(top, red, white);background: -o-linear-gradient(top, red, white);background: -webkit-linear-gradient(top, red, white);
}
</style>
</head>
<body>
<div id="grad1"></div>
</body>
</html>
上面的代碼呈現(xiàn)如下:
例2
更改相同的漸變從左到右運(yùn)行:
<!DOCTYPE html>
<html>
<head>
<style>
#grad1 {width: 100px;height: 100px;border: 1px solid rgb(51, 51, 51);background: -moz-linear-gradient(left, red, white);background: -moz-linear-gradient(toright, red, white);background: -ms-linear-gradient(left, red, white);background: -o-linear-gradient(left, red, white);background: -webkit-linear-gradient(left, red, white);
}
</style>
</head>
<body>
<div id="grad1"></div>
</body>
</html>
上面的代碼呈現(xiàn)如下:
例3
要使?jié)u變沿對(duì)角線運(yùn)行,請(qǐng)指定水平和垂直起始位置。
例如:
<!DOCTYPE html>
<html>
<head>
<style>
#grad1 {width: 100px;height: 100px;border: 1px solid rgb(51, 51, 51);background: -moz-linear-gradient(lefttop, red, white);background: -moz-linear-gradient(tobottomright, red, white);background: -ms-linear-gradient(lefttop, red, white);background: -o-linear-gradient(lefttop, red, white);background: -webkit-linear-gradient(lefttop, red, white);
}
</style>
</head>
<body>
<div id="grad1"></div>
</body>
</html>
上面的代碼呈現(xiàn)如下:
使用線性漸變的角度
沒(méi)有角度,瀏覽器將根據(jù)給定的方向自動(dòng)確定值。
我們可以專(zhuān)門(mén)設(shè)置角度來(lái)控制漸變的方向。以下代碼顯示如何設(shè)置角度。
background: linear-gradient(70deg, black, white);
例如,這里是兩個(gè)梯度,第一個(gè)具有朝向右邊的方向,第二個(gè)具有70度的角度。
<!DOCTYPE html>
<html>
<head>
<style>
#grad1 {width: 100px;height: 100px;border: 1px solid rgb(51, 51, 51);background: linear-gradient(70deg, black, white);
}
#grad2 {width: 100px;height: 100px;border: 1px solid rgb(51, 51, 51);background: linear-gradient(black, white);
}
</style>
</head>
<body>
<div id="grad1"></div>
<div id="grad2"></div>
</body>
</html>
上面的代碼呈現(xiàn)如下:
例4
上面的代碼呈現(xiàn)如下:
<!DOCTYPE html>
<html>
<head>
<style>
#grad1 {height: 100px;background: -webkit-linear-gradient(0deg, red, white);background: -o-linear-gradient(0deg, red, white);background: -moz-linear-gradient(0deg, red, white);background: linear-gradient(0deg, red, white);
}
#grad2 {height: 100px;background: -webkit-linear-gradient(90deg, red, white);background: -o-linear-gradient(90deg, red, white);background: -moz-linear-gradient(90deg, red, white);background: linear-gradient(90deg, red, white);
}
#grad3 {height: 100px;background: -webkit-linear-gradient(180deg, red, white);background: -o-linear-gradient(180deg, red, white);background: -moz-linear-gradient(180deg, red, white);background: linear-gradient(180deg, red, white);
}
#grad4 {height: 100px;background: -webkit-linear-gradient(-90deg, red, white);background: -o-linear-gradient(-90deg, red, white);background: -moz-linear-gradient(-90deg, red, white);background: linear-gradient(-90deg, red, white);
}
</style>
</head>
<body>
<div id="grad1" style="color:white;text-align:center;">0deg</div><br>
<div id="grad2" style="color:white;text-align:center;">90deg</div><br>
<div id="grad3" style="color:white;text-align:center;">180deg</div><br>
<div id="grad4" style="color:white;text-align:center;">-90deg</div>
</body>
</html>
上面的代碼呈現(xiàn)如下:
顏色停止
顏色停止沿著漸變線定義在該位置具有特定顏色的點(diǎn)。
位置可以指定為線的長(zhǎng)度的百分比,或絕對(duì)長(zhǎng)度。
您可以指定與您一樣多的停止點(diǎn)。
要以百分比形式指定位置,0%表示起點(diǎn),而100%表示結(jié)束點(diǎn)。
要?jiǎng)?chuàng)建效果,我們可以在必要時(shí)使用該范圍之外的值。
此示例指定三個(gè)停止點(diǎn):
<!DOCTYPE html>
<html>
<head>
<style>
#grad1 {width: 100px;height: 100px;border: 1px solid rgb(51, 51, 51);background: -moz-linear-gradient(centertop, blue, white 60%, red);background: -moz-linear-gradient(tobottom, blue, white 60%, red);background: -ms-linear-gradient(centertop, blue, white 60%, red);background: -o-linear-gradient(centertop, blue, white 60%, red);background: -webkit-linear-gradient(top, blue, white 60%, red);background: linear-gradient(tobottom, blue, white 60%, red);
}
</style>
</head>
<body>
<div id="grad1"></div>
<div id="grad2"></div>
</body>
</html>
上面的代碼呈現(xiàn)如下:
例5
這里有一個(gè)使用各種顏色的示例,所有顏色均勻分布:
<!DOCTYPE html>
<html>
<head>
<style>
#grad1 {width: 100px;height: 100px;border: 1px solid rgb(51, 51, 51);background: -moz-linear-gradient(left, red, orange, yellow, green, blue) repeat scroll 0% 0% transparent;background: -moz-linear-gradient(toright, red, orange, yellow, green, blue) repeat scroll 0% 0% transparent;background: -ms-linear-gradient(left, red, orange, yellow, green, blue) repeat scroll 0% 0% transparent;background: -o-linear-gradient(left, red, orange, yellow, green, blue) repeat scroll 0% 0% transparent;background: -webkit-linear-gradient(left, red, orange, yellow, green, blue) repeat scroll 0% 0% transparent;
}
</style>
</head>
<body>
<div id="grad1"></div>
</body>
</html>
上面的代碼呈現(xiàn)如下:
透明度和梯度
CSS漸變支持透明度。
為了增加透明度,我們使用rgba()
函數(shù)定義顏色停止。
rgba()
函數(shù)中的最后一個(gè)參數(shù)可以是從0到1的值。它定義顏色的透明度:0表示完全透明,1表示完全不透明。
<!DOCTYPE html>
<html>
<head>
<style>
#grad1 {height: 200px;background: linear-gradient(toright, rgba(255,0,0,0), rgba(255,0,0,1));
}
</style>
</head>
<body>
<div id="grad1"></div>
</body>
</html>
上面的代碼呈現(xiàn)如下:
徑向梯度
徑向梯度使用radial-gradient()
函數(shù)來(lái)指定。
它的語(yǔ)法與線性漸變類(lèi)似,只不過(guò)您可以指定漸變的結(jié)束形狀,圓形或橢圓形以及其大小。
默認(rèn)情況下,結(jié)束形狀是一個(gè)橢圓,其比例與容器的框相同。
以下代碼顯示了具有均勻間隔的色彩停止的徑向漸變。
<!DOCTYPE html>
<html>
<head>
<style>
#grad1 {height: 200px;width: 200px;background: -webkit-radial-gradient(red, green, yellow);background: -o-radial-gradient(red, green, yellow);background: -moz-radial-gradient(red, green, yellow);background: radial-gradient(red, green, yellow);
}
</style>
</head>
<body>
<div id="grad1"></div>
</body>
</html>
上面的代碼呈現(xiàn)如下:
例6
以下代碼顯示了如何創(chuàng)建具有不同間隔色停的徑向梯度。
<!DOCTYPE html>
<html>
<head>
<style>
#grad1 {height: 150px;width: 200px;background: -webkit-radial-gradient(red 5%, green 15%, yellow 60%);background: -o-radial-gradient(red 5%, green 15%, yellow 60%);background: -moz-radial-gradient(red 5%, green 15%, yellow 60%);background: radial-gradient(red 5%, green 15%, yellow 60%);
}
</style>
</head>
<body>
<div id="grad1"></div>
</body>
</html>
上面的代碼呈現(xiàn)如下:
設(shè)置徑向漸變的形狀
shape參數(shù)定義徑向梯度的形狀。
它可以取值circle
或ellipse
。默認(rèn)值為ellipse
。
<!DOCTYPE html>
<html>
<head>
<style>
#grad1 {height: 150px;width: 200px;background: -webkit-radial-gradient(red, yellow, green);background: -o-radial-gradient(red, yellow, green);background: -moz-radial-gradient(red, yellow, green);background: radial-gradient(red, yellow, green);
}
#grad2 {height: 150px;width: 200px;background: -webkit-radial-gradient(circle, red, yellow, green);background: -o-radial-gradient(circle, red, yellow, green);background: -moz-radial-gradient(circle, red, yellow, green);background: radial-gradient(circle, red, yellow, green);
}
</style>
</head>
<body>
<p>Ellipse (this is default):</p>
<div id="grad1"></div>
<p>Circle:</p>
<div id="grad2"></div>
</body>
</html>
上面的代碼呈現(xiàn)如下:
橢圓(這是默認(rèn)值):
圓:
徑向梯度大小
我們可以使用size參數(shù)定義徑向漸變的大小。
徑向漸變的大小可以取四個(gè)值:
- closest-side
- farthest-side
- closest-corner
- farthest-corner
<!DOCTYPE html>
<html>
<head>
<style>
#grad1 {height: 150px;width: 150px;background: radial-gradient(closest-side at 60% 55%,blue,green,yellow,red);
}
#grad2 {height: 150px;width: 150px;background: radial-gradient(farthest-side at 60% 55%,blue,green,yellow,red);
}
#grad3 {height: 150px;width: 150px;background: radial-gradient(closest-corner at 60% 55%,blue,green,yellow,red);
}
#grad4 {height: 150px;width: 150px;background: radial-gradient(farthest-corner at 60% 55%,blue,green,yellow,red);
}
</style>
</head>
<body>
<p><strong>closest-side:</strong></p>
<div id="grad1"></div>
<p><strong>farthest-side:</strong></p>
<div id="grad2"></div>
<p><strong>closest-corner:</strong></p>
<div id="grad3"></div>
<p><strong>farthest-corner (this is default):</strong></p>
<div id="grad4"></div>
</body>
</html>
上面的代碼呈現(xiàn)如下:
closest-side:
farthest-side:
closest-corner:
farthest-corner (this is default):
重復(fù)的梯度
linear-gradient()
和radial-gradient()
不要重復(fù)停止。
repeating-linear-gradient()
和repeating-radial-gradient()
可以重復(fù)梯度。
此示例使用repeating-linear-gradient()
創(chuàng)建漸變:
<!DOCTYPE html>
<html>
<head>
<style>
#grad1 {height: 150px;width: 200px;background: repeating-linear-gradient(-45deg, yellow, yellow 5px, white 5px, white 10px);
}
</style>
</head>
<body>
<div id="grad1"></div>
</body>
</html>
上面的代碼呈現(xiàn)如下:
例7
此示例使用repeating-radial-gradient()
創(chuàng)建漸變:
<!DOCTYPE html>
<html>
<head>
<style>
#grad1 {height: 150px;width: 200px;background: repeating-radial-gradient(red, red 5px, white 5px, white 10px);
}
</style>
</head>
<body>
<div id="grad1"></div>
</body>
</html>
上面的代碼呈現(xiàn)如下: