全部評論(1條)
-
- 庸堂燃繃8021 2018-07-22 00:00:00
- 線性漸變在CSS3和IE濾鏡中的實(shí)現(xiàn) 對于wan美主義者來說,為了一個漸變而使用一張圖片是一件痛苦的事情,就像有鼻屎不摳掉一樣痛苦= =。所以對于普通的漸變而言,能用CSS解決的就不去動用圖片。 CSS3中為我們提供了linear-gradient方法,可以直接對背景設(shè)置漸變。 CSS Code復(fù)制內(nèi)容到剪貼板<!DOCTYPE> <style> div { width:100px;height:100px;text-align:center; font:16px/100px '微軟雅黑';color:#FFF; /*以下是CSS3的線性漸變*/ background:-webkit-linear-gradient(top,#FD0,#C30); background:-moz-linear-gradient(top,#FD0,#C30); background:-o-linear-gradient(top,#FD0,#C30); } </style> <div>次碳酸鈷</div> 但是CSS3也是很蛋疼的東西,他需要個瀏覽器前綴。造成了這玩意兒得寫三行。這個方法通常使用三個參數(shù)(也可用更多參數(shù)調(diào)更多色,這個以后再說)。diyi個參數(shù)是漸變的方向,top是從上到下,至于left、right、bottom的效果很容易從top推倒出來我就不羅嗦了。CSS3還支持特定角度的漸變,diyi個參數(shù)可以用度數(shù)比如45deg就是斜角漸變,但是這東西在IE上實(shí)現(xiàn)起來很困難,這里先不多說了。第二第三個參數(shù)是漸變的顏色,這個從代碼上看就一目了然的。CSS3的顏色可以用rgba來實(shí)現(xiàn)透明,比如50%透明的紅色:rgba(255,0,0,0.5),注意透明通道的取值范圍是0到1之間。 接下來就說說坑爹的IE,IE下需要通過漸變來實(shí)現(xiàn),對于IE9那半吊子的CSS3我已經(jīng)吐槽無力了,老老實(shí)實(shí)的用濾鏡比較好。 CSS Code復(fù)制內(nèi)容到剪貼板<!DOCTYPE> <style> div { width:100px;height:100px;text-align:center; font:16px/100px '微軟雅黑';color:#FFF; /*以下是IE的線性漸變*/ filter:progid:DXImageTransform.Microsoft.Gradient( StartColorStr=#FFDD00,EndColorStr=#CC3300 ); } </style> <div>次碳酸鈷</div> 看吧,IE也很容易實(shí)現(xiàn)這樣簡單的漸變,雖然代碼長了一些。這里要注意的是濾鏡里的顏色不能用簡單的#HHH去定義,必須寫上完整的六位十六進(jìn)制。如果需要同明度,就在前面加兩位作為透明度,比如50%透明的紅色:#80FF0000。在漸變方向上,IE沒有CSS3那么豐富的方向可以旋轉(zhuǎn),但是Z基本的垂直和水平還是可以做到的。默認(rèn)是從上往下的漸變,可以加上GradientType=1讓漸變變成從左往右的。 CSS Code復(fù)制內(nèi)容到剪貼板div { filter:progid:DXImageTransform.Microsoft.Gradient( StartColorStr=#FFDD00,EndColorStr=#CC3300,GradientType=1 ); } 既然用濾鏡和CSS3都可以兼容實(shí)現(xiàn),那么做個全兼容也就是把上面的方法合并起來而已。 CSS Code復(fù)制內(nèi)容到剪貼板<!DOCTYPE> <style> div { width:100px;height:100px;text-align:center; font:16px/100px '微軟雅黑';color:#FFF; /*全兼容線性漸變*/ background:-webkit-linear-gradient(top,#FD0,#C30); background:-moz-linear-gradient(top,#FD0,#C30); background:-o-linear-gradient(top,#FD0,#C30); filter:progid:DXImageTransform.Microsoft.Gradient( StartColorStr=#FFDD00,EndColorStr=#CC3300 ); } </style> <div>次碳酸鈷</div> 元素投影效果在CSS3和IE濾鏡中的實(shí)現(xiàn) 按照慣例,先說說CSS3的投影效果。 CSS Code復(fù)制內(nèi)容到剪貼板<!DOCTYPE> <style> div { width:100px;height:100px;text-align:center; font:14px/100px 微軟雅黑; border:1px solid #CCC; /*CSS3投影效果*/ box-shadow:0px 0px 10px #CCC; } </style> <div>次碳酸鈷</div> 這個box-shadow不需要加瀏覽器兼容頭,我Z喜歡這樣的CS3了!IE9雖然也支持CSS3,不過那坑爹貨BUG太多,我不喜歡用IE9的CSS3。就這個投影效果而言,IE9對于設(shè)置了collapse的TABLE元素使用投影會無效??傊甀E就是各種BUG,不過反正是要兼容到IE6的,就無視IE9的這些半吊子CSS3好了。 在IE上實(shí)現(xiàn)投影效果還是挺麻煩的,雖然IE有Shadow濾鏡,但是那玩意兒和線性漸變沒區(qū)別,不能達(dá)到CSS3的那種效果。我就不示范了,想知道那玩意兒的效果是什么樣自己試試就好。IE的一大堆濾鏡中只有Blur這個濾鏡可以達(dá)到類似的效果,可是如果把Blur直接用在元素上會讓內(nèi)容也模糊了,所以我們要創(chuàng)建一個新元素對它Blur,讓后再把這個新元素置入原元素的底下作為背景。這就涉及到一堆坐標(biāo)計(jì)算,如果居中的元素使用投影效果,還涉及到瀏覽器調(diào)整大小時元素的位移計(jì)算。所以IE實(shí)現(xiàn)它Z好用JS寫。我已經(jīng)把注釋寫的很詳細(xì)了,看這個代碼應(yīng)該就可以明白。 CSS Code復(fù)制內(nèi)容到剪貼板<!DOCTYPE> <style> .shadow { width:100px;height:100px;text-align:center; font:14px/100px 微軟雅黑; border:1px solid #CCC; background:#FFF; position:relative; } .shadow-IE { display:block; position:absolute;background:#CCC; filter:progid:DXImageTransform.Microsoft.Blur(pixelRadius=5); } </style> <div class="shadow">次碳酸鈷</div> <script> //判斷IE var isIE=/MSIE/i.test(navigator.userAgent); if(isIE){ //獲取全部元素,其實(shí)可以用document.all的,不過習(xí)慣這樣寫 var all=document.getElementsByTagName("*"),s=[],i=0; //把class為shadow的元素全放進(jìn)s這個數(shù)組中 while(o=all[i++])if(o.className=="shadow")s.push(o); //遍歷s數(shù)組 for(i in s){ //創(chuàng)建一個元素,我習(xí)慣用u,其實(shí)用什么都可以 var o=s[i],u=document.createElement("u"); //把父元素設(shè)置成相對定位 o.parentNode.style.position="relative"; //對IE6、7要加個hasLayout,不然坐標(biāo)計(jì)算會出錯 o.parentNode.style.zoom=1; //把創(chuàng)建的元素放到shadow元素的上方 //一定要是上方,因?yàn)橄旅娴脑貢踝∩厦娴脑? o.parentNode.insertBefore(u,o); //給創(chuàng)建的元素應(yīng)用個樣式 u.className="shadow-IE"; //把寬度和高度設(shè)置到創(chuàng)建的元素上 u.style.width=o.offsetWidth+"px"; u.style.height=o.offsetHeight+"px"; }; //當(dāng)窗口改變大小時觸發(fā) window.resize=function(){ //遍歷s數(shù)組 for(i in s){ //我們在上面創(chuàng)建的元素移動到需要的位置 var o=s[i],p=o.previousSibling; p.style.top=o.offsetTop-5+"px", p.style.left=o.offsetLeft-5+"px"; }; }; //主動觸發(fā)一次這個事件,讓里面的代碼在加載時執(zhí)行一次 window.resize(); }; </script>
-
贊(8)
回復(fù)(0)
熱門問答
- 如何使用CSS3配合IE濾鏡實(shí)現(xiàn)漸變和投影的效果
2018-07-21 00:17:18
449
1
- ps如何送給投影添加濾鏡
2010-10-27 14:14:22
672
2
- vray不支持無光投影 這效果怎么實(shí)現(xiàn)
2013-06-04 00:28:54
479
3
- illustrator如何去掉投影效果
- 打開一個文件,圖形有投影效果,請問這時我可以把它的投影效果去除嗎?... 打開一個文件,圖形有投影效果,請問這時我可以把它的投影效果去除嗎? 展開
2010-06-17 11:03:14
485
4
- 模溫機(jī)和冷水機(jī)怎么配合使用?
2012-07-03 00:52:34
682
4
- 佳能700d單色模式里的濾鏡效果什么意思
2015-08-22 07:21:09
566
1
- cdr怎么做投影效果?
2013-03-29 23:19:41
369
3
- 幸運(yùn)魚投影燈如何使用
2018-12-03 07:16:47
393
0
- 電接點(diǎn)壓力表怎么才能和水泵配合使用
2018-11-11 02:49:06
271
0
- 光電傳感器必須和PLC配合使用嗎?
2012-09-26 02:40:15
679
4
- 索尼dscQX30怎樣和智能手機(jī)配合使用
2018-11-19 07:36:57
374
0
- 漸變手機(jī)殼如何加工
2018-11-20 19:56:10
324
0
- 光纖連接器和適配器是怎么配合使用的
2017-11-14 13:05:46
367
1
- 能譜儀如何與掃描電鏡配合使用
2012-10-31 02:00:04
378
2
- 工裝夾具定位銷和底座間如何配合?過盈配合還是過渡配合還是間隙配合?
- 在設(shè)計(jì)工裝夾具時,要在夾具上設(shè)計(jì)定位銷(或防錯銷),請問下定位銷(或防錯銷)與夾具底座上的孔要怎么配合?過硬配合嗎?過盈量多少合適?因之前設(shè)計(jì)過一個夾具,間隙大概0.01,銷子很松,無法固定在夾具底座上。
2015-01-31 07:31:51
735
2
- 超聲波清洗的Z佳效果要如何實(shí)現(xiàn)?
2017-04-20 07:54:09
437
1
- illustrator里怎樣把圖像和投影效果分開?
2010-08-14 15:00:36
430
3
- 交流接觸器可以和PLC配合使用嗎?
- 打算用交流接觸器控制電機(jī)主電路,PLC來控制接觸器,達(dá)到通斷電的效果,可以實(shí)現(xiàn)嗎?給推薦個交流接觸器的型號吧。還有PLC和交流接觸器直接用不用接中間繼電器?
2012-09-20 01:32:47
677
6
- 如何通過一個陀螺儀傳感器配合PID算法實(shí)現(xiàn)兩輪車的平衡
- 如何通過一個陀螺儀傳感器配合PID算法實(shí)現(xiàn)兩輪車的平衡兩個車輪平行安裝,通過兩個電機(jī)驅(qū)動,如何通過一個陀螺儀傳感器實(shí)現(xiàn)兩輪車在沒有支撐的情況下保持直立,且能夠前進(jìn)后退轉(zhuǎn)彎。具體是轉(zhuǎn)彎還是前進(jìn)后退可以用第二種傳感器發(fā)出指令。這里想要問的是如何通過... 如何通過一個陀螺儀傳感器配合PID算法實(shí)現(xiàn)兩輪車的平衡兩個車輪平行安裝,通過兩個電機(jī)驅(qū)動,如何通過一個陀螺儀傳感器實(shí)現(xiàn)兩輪車在沒有支撐的情況下保持直立,且能夠前進(jìn)后退轉(zhuǎn)彎。具體是轉(zhuǎn)彎還是前進(jìn)后退可以用第二種傳感器發(fā)出指令。這里想要問的是如何通過PID算法讓兩輪車保持直立,在車運(yùn)動的時候如何計(jì)算出使車不跌倒的加速度 展開
2018-11-15 02:24:15
326
0
4月突出貢獻(xiàn)榜
推薦主頁
最新話題





參與評論
登錄后參與評論