使用css3背景漸變中的透明度來設(shè)置不同顏色的背景漸變
發(fā)布時(shí)間:2014-03-31 11:36:32 作者:佚名
我要評(píng)論

根據(jù)用戶輸入的顏色來配置整個(gè)主題的顏色,發(fā)現(xiàn)css3的背景漸變中的透明度可以解決這個(gè)問題,具體的實(shí)現(xiàn)如下,大家可以參考下
項(xiàng)目最近這幾天正在做不同主題的顏色配置方案,要根據(jù)用戶輸入的顏色來配置整個(gè)主題的顏色,讓人頭疼的是,其中一個(gè)主題所有的列表頭部背景色都是2到3組漸變值的線性漸變,也就是說,要根據(jù)用戶輸入的顏色值生成不同的但相似度很近的漸變顏色。我上網(wǎng)查了些資料,現(xiàn)在也有js支持根據(jù)你輸入的網(wǎng)頁內(nèi)容自動(dòng)填充漸變色,但是對(duì)于我這種js不是很好的人來說,還是想從css3上找點(diǎn)方法出來。
我發(fā)現(xiàn)css3的背景漸變中的透明度可以解決這個(gè)問題(前提是背景漸變的顏色是相近的)。
我在這里簡單說一下css3背景漸變中的線性漸變。線性漸變的一般結(jié)構(gòu)是:
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
其中各個(gè)瀏覽器渲染不同,又分為:
Webkit:
background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
漸變類型 - 在屬性里-webkit-linear-gradient
漸變從哪開始(top)
顏色取值和在漸變中的位置 (rgba(0,0,0,0.1) 40%)
下面的寫法是用于safari舊版本的
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 0.1)), color-stop(40%, rgba(0, 0, 0, 0.1)), color-stop(98%, rgba(0, 0, 0, 0.2)),color-stop(100%, #FFFFFF));
漸變類型 (linear)
漸變開始的X Y 軸坐標(biāo)(0 0 或者left-top)
漸變結(jié)束的X Y 軸坐標(biāo)(0 100% 或者left-bottom)
顏色取值 (color-stop(40%, rgba(0,0,0,0.1)))
Mozilla:
background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
Firefox渲染漸變的寫法和Safari大致相同,不同的是需要將漸變屬性改為-moz-linear-gradient
Opera:
background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
按照上面的寫法,讓Opera瀏覽器渲染直接將屬性改為-o-linear-gradient,是不是很簡單?
IE:
IE比較頑固,不支持漸變,但是提供了漸變?yōu)V鏡
filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#22FFFFFF', EndColorStr='#33000000');
說了這么多,大家對(duì)例子里rgba(0, 0, 0, 0.1) 中的0.1是不是很好奇?沒錯(cuò),解決這個(gè)頭疼問題的關(guān)鍵就是它 - 漸變透明度。設(shè)置漸變透明度(值從0.1-0.9)可以使?jié)u變顏色處在不同值的透明度下,也就是說通過透明度,背景可以呈現(xiàn)不同透明度下的背景顏色。
下面圖片是用上面代碼生成的背景漸變:

是不是看不出漸變透明(感覺灰灰的)?沒錯(cuò),因?yàn)轭伾≈凳菑陌椎胶冢侵虚g的過渡色自然就是灰色的了。但是如果你在加上一個(gè)背景顏色的話,那效果就出來了。
比如我們加個(gè)background-color: #92D050:

你只需要配置background-color, 就可以讓背景呈現(xiàn)不同的漸變色。
完整的代碼:
background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 0.1)), color-stop(40%, rgba(0, 0, 0, 0.1)), color-stop(98%, rgba(0, 0, 0, 0.2)),color-stop(100%, #FFFFFF));
background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#22FFFFFF', EndColorStr='#33000000');
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
background-color: #669900;
其中rgba()中的顏色(rgb)一般取白色(255,255,255)或者黑色(0,0,0), 而透明度的設(shè)置就看你自己想要什么樣的漸變效果了。
下面是幾個(gè)不同漸變色的例子:
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.9) 10%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);

background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.9) 2%, rgba(0, 0, 0, 0.5) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);

background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.3) 2%, rgba(0, 0, 0, 0.5) 40%, rgba(0, 0, 0, 0.2) 98%, rgba(255, 255, 255, 0.9) 99%);
所以如果能很好的運(yùn)用背景漸變的透明度,可以在很大程度上定義統(tǒng)一的背景漸變色,而用戶只需要輸入一個(gè)顏色域,就可以把主題配置成想要的漸變效果。不過遺憾的是,這種方法就現(xiàn)在而言,只能適用于背景漸變顏色相近的主題。多余一種顏色的背景漸變還是得用這種寫法
background: linear-gradient(to bottom, #396E8E 0%, #336888 29%, #225777 67%, #194E6E 100%);
我發(fā)現(xiàn)css3的背景漸變中的透明度可以解決這個(gè)問題(前提是背景漸變的顏色是相近的)。
我在這里簡單說一下css3背景漸變中的線性漸變。線性漸變的一般結(jié)構(gòu)是:
復(fù)制代碼
代碼如下:background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
其中各個(gè)瀏覽器渲染不同,又分為:
Webkit:
復(fù)制代碼
代碼如下:background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
漸變類型 - 在屬性里-webkit-linear-gradient
漸變從哪開始(top)
顏色取值和在漸變中的位置 (rgba(0,0,0,0.1) 40%)
下面的寫法是用于safari舊版本的
復(fù)制代碼
代碼如下:background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 0.1)), color-stop(40%, rgba(0, 0, 0, 0.1)), color-stop(98%, rgba(0, 0, 0, 0.2)),color-stop(100%, #FFFFFF));
漸變類型 (linear)
漸變開始的X Y 軸坐標(biāo)(0 0 或者left-top)
漸變結(jié)束的X Y 軸坐標(biāo)(0 100% 或者left-bottom)
顏色取值 (color-stop(40%, rgba(0,0,0,0.1)))
Mozilla:
復(fù)制代碼
代碼如下:background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
Firefox渲染漸變的寫法和Safari大致相同,不同的是需要將漸變屬性改為-moz-linear-gradient
Opera:
復(fù)制代碼
代碼如下:background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
按照上面的寫法,讓Opera瀏覽器渲染直接將屬性改為-o-linear-gradient,是不是很簡單?
IE:
IE比較頑固,不支持漸變,但是提供了漸變?yōu)V鏡
復(fù)制代碼
代碼如下:filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#22FFFFFF', EndColorStr='#33000000');
說了這么多,大家對(duì)例子里rgba(0, 0, 0, 0.1) 中的0.1是不是很好奇?沒錯(cuò),解決這個(gè)頭疼問題的關(guān)鍵就是它 - 漸變透明度。設(shè)置漸變透明度(值從0.1-0.9)可以使?jié)u變顏色處在不同值的透明度下,也就是說通過透明度,背景可以呈現(xiàn)不同透明度下的背景顏色。
下面圖片是用上面代碼生成的背景漸變:

是不是看不出漸變透明(感覺灰灰的)?沒錯(cuò),因?yàn)轭伾≈凳菑陌椎胶冢侵虚g的過渡色自然就是灰色的了。但是如果你在加上一個(gè)背景顏色的話,那效果就出來了。
比如我們加個(gè)background-color: #92D050:

你只需要配置background-color, 就可以讓背景呈現(xiàn)不同的漸變色。
完整的代碼:
復(fù)制代碼
代碼如下:background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 0.1)), color-stop(40%, rgba(0, 0, 0, 0.1)), color-stop(98%, rgba(0, 0, 0, 0.2)),color-stop(100%, #FFFFFF));
background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#22FFFFFF', EndColorStr='#33000000');
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);
background-color: #669900;
其中rgba()中的顏色(rgb)一般取白色(255,255,255)或者黑色(0,0,0), 而透明度的設(shè)置就看你自己想要什么樣的漸變效果了。
下面是幾個(gè)不同漸變色的例子:

復(fù)制代碼
代碼如下:background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.9) 10%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);

復(fù)制代碼
代碼如下:background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.9) 2%, rgba(0, 0, 0, 0.5) 40%, rgba(0, 0, 0, 0.2) 98%, #FFFFFF 100%);

復(fù)制代碼
代碼如下:background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.3) 2%, rgba(0, 0, 0, 0.5) 40%, rgba(0, 0, 0, 0.2) 98%, rgba(255, 255, 255, 0.9) 99%);
所以如果能很好的運(yùn)用背景漸變的透明度,可以在很大程度上定義統(tǒng)一的背景漸變色,而用戶只需要輸入一個(gè)顏色域,就可以把主題配置成想要的漸變效果。不過遺憾的是,這種方法就現(xiàn)在而言,只能適用于背景漸變顏色相近的主題。多余一種顏色的背景漸變還是得用這種寫法
復(fù)制代碼
代碼如下:background: linear-gradient(to bottom, #396E8E 0%, #336888 29%, #225777 67%, #194E6E 100%);
相關(guān)文章
- CSS3制作半透明邊框記得以前Facebook有段時(shí)間使用了非常多的半透明邊框(Facebox),雖然現(xiàn)在不支持了,但是還是值得研究一下,接下來將詳細(xì)介紹,需要的朋友可以參考下2012-12-09
- 這篇文章主要介紹了css實(shí)現(xiàn)透明漸變特效的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)2020-02-18