tml的css3實現(xiàn)帶漸變的炫酷按鈕
用到的技術(shù)有CSS3的漸變,CSS3動畫等
效果圖:
實現(xiàn)代碼
html:
css:
使用border-image可以設(shè)置漸變色邊框,但是當(dāng)它與border-radius組合使用時,兩者卻無法兼容。
因此,實現(xiàn)這個效果的另一個思路是:利用兩個圓角矩形的面積差形成邊框。故可以使用以下方法實現(xiàn):
使用嵌套的兩個div,并設(shè)置父元素的內(nèi)邊距padding以此制造面積差,從而形成邊框的效果。
HTML
復(fù)制代碼
<div class="border-box"> <div class="border-content"></div></div>
CSS
復(fù)制代碼
.border-box{ width: 200px; background:linear-gradient(0deg,#00135A,#01A1FF); border-radius: 5px; padding: 2px;/* 邊框?qū)挾?*/}.border-content{ width: 200px; height: 100px; border-radius: 5px; background-color: white; }
使用偽元素充當(dāng)背景也同樣可以達(dá)到上述效果,注意設(shè)置z-index將偽元素置于內(nèi)容之下
HTML
復(fù)制代碼
<div class="border-content"></div>
CSS
復(fù)制代碼
.border-content{ width: 200px; height: 100px; border-radius: 5px; position: relative; background-color: white; }.border-content::before{ content: ''; position: absolute; top: -2px; right: -2px; bottom: -2px; left: -2px;/* 邊框?qū)挾?*/ border-radius: 5px; background: linear-gradient(0deg,#00135A,#01A1FF); z-index: -1;/* 置于內(nèi)容之下 */ }
給一個div設(shè)置兩個不同大小的背景,從而利用兩個背景制造面積差,也可以實現(xiàn)上述效果。
使用background-image屬性設(shè)置兩組顏色,一組是內(nèi)容顏色,另一組是border邊框顏色,用逗號隔開。
可以使用background-clip 屬性,該屬性規(guī)定了背景的繪制區(qū)域。給一組設(shè)置為padding-box(背景繪制區(qū)域從內(nèi)邊距框開始),第二組為border-box(背景繪制區(qū)域延伸至邊框)。
此時的效果如下:
可以看出背景色并不是我們想要的效果,原因是這兩組的繪制起點(diǎn)都是padding-box。
使用background-origin屬性,該屬性規(guī)定了背景的繪制區(qū)域相對于什么位置來定位。給一組設(shè)置為padding-box(背景繪制區(qū)域以 padding 區(qū)域為參考),第二組為border-box(背景繪制區(qū)域以 border 區(qū)域為參考)。
此時即可得到想要的效果,代碼如下:
HTML
復(fù)制代碼
<div class="border-content"></div>
CSS
復(fù)制代碼
.border-content{ width: 200px; height: 100px; border: 2px solid transparent; border-radius: 5px; background-clip: padding-box,border-box; background-origin: padding-box,border-box; background-image: linear-gradient(0deg,#FFF,#fff),linear-gradient(0deg,#00135A,#01A1FF);}
該思路無法實現(xiàn)透明底的漸變色圓角邊框。
下圖所示,在網(wǎng)頁設(shè)計中,有時候會需要用到漸變效果,漸變可以創(chuàng)建出類似于彩虹的視覺圖案效果,在沒有CSS3之前,為了顯示一個漸變需要專門制作一個圖片,這種不法不但不靈活還增加請求數(shù),而CSS3可以輕松實現(xiàn)網(wǎng)頁漸變效果,用于做漸變背景、漸變導(dǎo)航、配合CSS3動畫做特效等。在CSS3中,Gradient(漸變)分為linear-gradient(線性漸變)和radial-gradient(徑向漸變)。CSS顏色線性漸變的語法在各種瀏覽器里的實現(xiàn)稍微有些不同,但最后是統(tǒng)一標(biāo)準(zhǔn)的:
CSS顏色線性漸變的語法
background-image:linear-gradient(<point>||<angle>,]?<stop>,<stop>[,<stop>]*)
第一個參數(shù)是漸變起始點(diǎn)或角。第二個參數(shù)是一種顏色停止點(diǎn)(color stops)。至少需要兩種顏色(起點(diǎn)和終點(diǎn)),你可以添加任意種顏色來增加顏色漸變的豐富程度。對顏色停止點(diǎn)的定義可以是一種顏色,或一種顏色加一個百分比:
/*color-stop(percentage/amount,color)*/color-stop(0.20,red)
因為CSS漸變色(Gradients)技術(shù)是CSS3里比較新的技術(shù),屬于高級的CSS功能,于是每種瀏覽器對這種技術(shù)的實現(xiàn)都添加了一些自己的特色。例如以WebKIt為渲染引擎的谷歌瀏覽器,就對它實現(xiàn)了多種語法。下面的這段代碼基本包括了所有自頂向下顏色漸變的所有情況:
#example1{/*底色*/background-color:#063053;/*chrome2+,safari4+;multiplecolorstops*/background-image:-webkit-gradient(linear,leftbottom,lefttop,color-stop(0.32,#063053),color-stop(0.66,#395873),color-stop(0.83,#5c7c99));/*chrome10+,safari5.1+*/background-image:-webkit-linear-gradient(#063053,#395873,#5c7c99);/*firefox;multiplecolorstops*/background-image:-moz-linear-gradient(top,#063053,#395873,#5c7c99);/*ie6+*/filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053',endColorstr='#395873');/*ie8+*/-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053',endColorstr='#395873')";/*ie10*/background-image:-ms-linear-gradient(#063053,#395873,#5c7c99);/*opera11.1*/background-image:-o-linear-gradient(#063053,#395873,#5c7c99);/*標(biāo)準(zhǔn)寫法*/background-image:linear-gradient(#063053,#395873,#5c7c99);
注意,我們首先設(shè)定了一個背景色。這個顏色是在萬一用戶使用的瀏覽器不支持CSS漸變色(Gradients)技術(shù)時使用的顏色。CSS漸變色(Gradients)技術(shù)里還支持帶有角度的漸變方向,而不僅僅只有直上直下或直左直右。我們可以用下面的語法實現(xiàn)它:
#example2{/*fallback*/background-color:#063053;/*chrome2+,safari4+;multiplecolorstops*/background-image:-webkit-gradient(linear,leftbottom,righttop,color-stop(0.32,#063053),color-stop(0.66,#395873),color-stop(0.83,#5c7c99));/*chrome10+,safari5.1+*/background-image:-webkit-linear-gradient(45deg,#063053,#395873,#5c7c99);/*firefox;multiplecolorstops*/background-image:-moz-linear-gradient(45deg,#063053,#395873,#5c7c99);/*ie10*/background-image:-ms-linear-gradient(45deg,#0630530%,#395873100%);/*opera11.1*/background-image:-o-linear-gradient(45deg,#063053,#395873);/*The"standard"*/background-image:linear-gradient(45deg,#063053,#395873);}
我們可以做的更復(fù)雜些….一個色彩繽紛的CSS顏色漸變?下面我們來做一個彩虹:
/*example3-linearrainbow*/#example3{/*fallback*/background-color:#063053;/*chrome2+,safari4+;multiplecolorstops*/background-image:-webkit-gradient(linear,leftbottom,lefttop,color-stop(0.20,red),color-stop(0.40,green),color-stop(0.6,blue),color-stop(0.8,purple),color-stop(1,orange));/*chrome10+,safari5.1+*/background-image:-webkit-linear-gradient(red,green,blue,purple,orange);/*firefox;multiplecolorstops*/background-image:-moz-linear-gradient(top,red,green,blue,purple,orange);/*ie10*/background-image:-ms-linear-gradient(red,green,blue,purple,orange);/*opera11.1*/background-image:-o-linear-gradient(red,green,blue,purple,orange);/*The"standard"*/background-image:linear-gradient(red,green,blue,purple,orange);}
關(guān)于IE對CSS顏色漸變技術(shù)的支持做一些說明:在早期IE是使用filter和-ms-filter語法實現(xiàn)漸變色,而最新版的IE里改為了-ms-linear-gradient語法。我們可以使用CSS里條件判斷語句來解決這個問題:
<!--[ifltIE10]><style>.gradientElement{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053',endColorstr='#395873');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053',endColorstr='#395873')";}</style><![endif]-->
線性漸變的語法
對象選擇器 {background:-瀏覽器前綴-linear-gradient( 起點(diǎn)方向,起點(diǎn)顏色,終點(diǎn)顏色);}
徑向漸變的語法
對象選擇器 {background:-瀏覽器前綴-radial-gradient( 起點(diǎn)方向,形狀,大小,起點(diǎn)顏色,終點(diǎn)顏色);}
漸變的兼容方法
1、線性漸變
各瀏覽器前綴
(1)Firefox
(2)Safari , Chrome
(3)Opera 11.10+
兼容IE
2、徑向漸變
徑向漸變和線性漸變的語法差不多
漸變應(yīng)用實例
1、徑向漸變做大背景
background-color:#4B770A;background-image:-webkit-gradient(radial,50%400,1,50%400,400,from(rgba(255,255,255,0.3)),to(rgba(255,255,255,0)));//僅實現(xiàn)了webkit下的效果
2、蒙版效果
position:fixed;width:100%;height:60px;bottom:0px;content:'';background:-moz-linear-gradient(top,rgba(255,255,255,0)0%,rgba(255,255,255,0.33)33%,rgba(255,255,255,0.73)66%,rgba(255,255,255,1)91%);background:-webkit-gradient(linear,lefttop,leftbottom,color-stop(0%,rgba(255,255,255,0)),color-stop(33%,rgba(255,255,255,0.33)),color-stop(66%,rgba(255,255,255,0.73)),color-stop(91%,rgba(255,255,255,1)));background:-webkit-linear-gradient(top,rgba(255,255,255,0)0%,rgba(255,255,255,0.33)33%,rgba(255,255,255,0.73)66%,rgba(255,255,255,1)91%);background:-o-linear-gradient(top,rgba(255,255,255,0)0%,rgba(255,255,255,0.33)33%,rgba(255,255,255,0.73)66%,rgba(255,255,255,1)91%);background:-ms-linear-gradient(top,rgba(255,255,255,0)0%,rgba(255,255,255,0.33)33%,rgba(255,255,255,0.73)66%,rgba(255,255,255,1)91%);background:linear-gradient(top,rgba(255,255,255,0)0%,rgba(255,255,255,0.73)33%,rgba(255,255,255,0.73)66%,rgba(255,255,255,1)91%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffffff',endColorstr='#ffffff',GradientType=0);
3、漸變按鈕
.myButton{-moz-box-shadow:inset0px1px0px0px#ffffff;-webkit-box-shadow:inset0px1px0px0px#ffffff;box-shadow:inset0px1px0px0px#ffffff;background:-webkit-gradient(linear,lefttop,leftbottom,color-stop(0.05,#ededed),color-stop(1,#dfdfdf));background:-moz-linear-gradient(top,#ededed5%,#dfdfdf100%);background:-webkit-linear-gradient(top,#ededed5%,#dfdfdf100%);background:-o-linear-gradient(top,#ededed5%,#dfdfdf100%);background:-ms-linear-gradient(top,#ededed5%,#dfdfdf100%);background:linear-gradient(tobottom,#ededed5%,#dfdfdf100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#dfdfdf',GradientType=0);background-color:#ededed;-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;border:1pxsolid#dcdcdc;display:inline-block;cursor:pointer;color:#777777;font-family:arial;font-size:15px;font-weight:bold;padding:6px24px;text-decoration:none;text-shadow:0px1px0px#ffffff;margin-top:100px;}.myButton:hover{background:-webkit-gradient(linear,lefttop,leftbottom,color-stop(0.05,#dfdfdf),color-stop(1,#ededed));background:-moz-linear-gradient(top,#dfdfdf5%,#ededed100%);background:-webkit-linear-gradient(top,#dfdfdf5%,#ededed100%);background:-o-linear-gradient(top,#dfdfdf5%,#ededed100%);background:-ms-linear-gradient(top,#dfdfdf5%,#ededed100%);background:linear-gradient(tobottom,#dfdfdf5%,#ededed100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfdfdf',endColorstr='#ededed',GradientType=0);background-color:#dfdfdf;}.myButton:active{position:relative;top:1px;}
4、用徑向漸變做一張優(yōu)惠券
主要的代碼如下:
background:radial-gradient(transparent0,transparent5px,#F39B005px);background-size:15px15px;background-position:9px3px;
完整代碼:
CSS代碼
這是公共樣式.stamp{width:387px;height:140px;padding:010px;position:relative;overflow:hidden;}.stamp:before{content:'';position:absolute;top:0;bottom:0;left:10px;right:10px;z-index:-1;}.stamp:after{content:'';position:absolute;left:10px;top:10px;right:10px;bottom:10px;box-shadow:0020px1pxrgba(0,0,0,0.5);z-index:-2;}.stampi{position:absolute;left:20%;top:45px;height:190px;width:390px;background-color:rgba(255,255,255,.15);transform:rotate(-30deg);}.stamp.par{float:left;padding:16px15px;width:220px;border-right:2pxdashedrgba(255,255,255,.3);text-align:left;}.stamp.parp{color:#fff;}.stamp.parspan{font-size:50px;color:#fff;margin-right:5px;}.stamp.par.sign{font-size:34px;}.stamp.parsub{position:relative;top:-5px;color:rgba(255,255,255,.8);}.stamp.copy{display:inline-block;padding:21px14px;width:100px;vertical-align:text-bottom;font-size:30px;color:rgb(255,255,255);}.stamp.copyp{font-size:16px;margin-top:15px;}
.stamp01{background:#F39B00;background:radial-gradient(rgba(0,0,0,0)0,rgba(0,0,0,0)5px,#F39B005px);background-size:15px15px;background-position:9px3px;}.stamp01:before{background-color:#F39B00;}
.stamp02{background:#D24161;background:radial-gradient(transparent0,transparent5px,#D241615px);background-size:15px15px;background-position:9px3px;}.stamp02:before{background-color:#D24161;}
.stamp03{background:#7EAB1E;background:radial-gradient(transparent0,transparent5px,#7EAB1E5px);background-size:15px15px;background-position:9px3px;}.stamp03:before{background-color:#7EAB1E;}.stamp03.copy{padding:10px6px10px12px;font-size:24px;}.stamp03.copyp{font-size:14px;margin-top:5px;margin-bottom:8px;}.stamp03.copya{background-color:#fff;color:#333;font-size:14px;text-decoration:none;padding:5px10px;border-radius:3px;display:block;}
.stamp04{width:390px;background:#50ADD3;background:radial-gradient(rgba(0,0,0,0)0,rgba(0,0,0,0)4px,#50ADD34px);background-size:12px8px;background-position:-5px10px;}.stamp04:before{background-color:#50ADD3;left:5px;right:5px;}.stamp04.copy{padding:10px6px10px12px;font-size:24px;}.stamp04.copyp{font-size:14px;margin-top:5px;margin-bottom:8px;}.stamp04.copya{background-color:#fff;color:#333;font-size:14px;text-decoration:none;padding:5px10px;border-radius:3px;display:block;}
HTML代碼
<divclass="stampstamp01"><divclass="par"><p>XXXXXX折扣店</p><subclass="sign">¥</sub><span>50.00</span><sub>優(yōu)惠券</sub><p>訂單滿100.00元</p></div><divclass="copy">副券<p>2015-08-13<br>2016-08-13</p></div><i></i></div>
<divclass="stampstamp02"><divclass="par"><p>XXXXXX折扣店</p><subclass="sign">¥</sub><span>50.00</span><sub>優(yōu)惠券</sub><p>訂單滿100.00元</p></div><divclass="copy">副券<p>2015-08-13<br>2016-08-13</p></div><i></i></div>
<divclass="stampstamp03"><divclass="par"><p>XXXXXX折扣店</p><subclass="sign">¥</sub><span>50.00</span><sub>優(yōu)惠券</sub><p>訂單滿100.00元</p></div><divclass="copy">副券<p>2015-08-13<br>2016-08-13</p><ahref="#">立即使用</a></div><i></i></div>
<divclass="stampstamp04"><divclass="par"><p>XXXXXX折扣店</p><subclass="sign">¥</sub><span>50.00</span><sub>優(yōu)惠券</sub><p>訂單滿100.00元</p></div><divclass="copy">副券<p>2015-08-13<br>2016-08-13</p><ahref="#">立即使用</a></div><i></i></div>
PS:用這個方式還可以做郵票,不信你試試
相信你看到這,一定覺得,這么長串的代碼,我怎么寫出來,看著都暈。如果是簡單的漸變,可以用less的函數(shù)來生成,只需要提供開始顏色和停止顏色。如果是按鈕,則有專門的網(wǎng)站,可視化生成。
Less函數(shù)
/*線性漸變*/.gradient(@origin:top,@start:#ffffff,@stop:#000000){background-color:@start;background-image:-webkit-linear-gradient(@origin,@start,@stop);background-image:-moz-linear-gradient(@origin,@start,@stop);background-image:-o-linear-gradient(@origin,@start,@stop);background-image:-ms-linear-gradient(@origin,@start,@stop);background-image:linear-gradient(@origin,@start,@stop);}
/*快速漸變*/.quick-gradient(@origin:left,@alpha:0.2){background-image:-webkit-linear-gradient(@origin,rgba(0,0,0,0.0),rgba(0,0,0,@alpha));background-image:-moz-linear-gradient(@origin,rgba(0,0,0,0.0),rgba(0,0,0,@alpha));background-image:-o-linear-gradient(@origin,rgba(0,0,0,0.0),rgba(0,0,0,@alpha));background-image:-ms-linear-gradient(@origin,rgba(0,0,0,0.0),rgba(0,0,0,@alpha));background-image:linear-gradient(@origin,rgba(0,0,0,0.0),rgba(0,0,0,@alpha));}
用法:
//html代碼<divclass="div1"></div><divclass="div2"></div>//css代碼div{width:200px;height:80px;margin:10px;}.div1{.gradient(top,#00B7EA,#0391B3);}.div2{.quick-gradient();}
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。