CSS技巧 — 不使用圖片實現圓角、陰影、漸變等功能
Posted on 2010-06-25 08:52 BearRui(AK-47) 閱讀(3933) 評論(32) 編輯 收藏 所屬分類: CSSUI要求越來越高,界面越做越華麗,給我們開發人員帶來的就是使用大量的背景圖片,下面介紹一些通過css(不使用圖片或少使用圖片)來實現一些很常見的效果,
圓角效果
圓角用的越來越多,因為圓角確實好看,效果如下:
要實現上面的圓角,一般切圖是左,右(或上下)各切1個圖片做背景,但這樣做只適合固定寬度或高度的box,而且如果box背景不一樣,圖片需要另外切。
現在很多瀏覽器都支持圓角的css,css3也支持,代碼如下:
.b_box{ text-align:center;width:200px;line-height:60px; border:1px solid #C0C0C0;background-color:#DBEAFF; /*firefox*/ -moz-border-radius: 5px; /*css3*/ border-radius: 5px; /*webkit*/ }
但IE9以下的版本都不支持圓角,所以上面的效果在ie9以下顯示還是直角的.
目前我們針對ie9以下的瀏覽器使用下面的方法實現,切1個透明的圓形圖片(這個圖片要求圓角內測是透明的,而外側是不透明的),用絕對定位來顯示4個圓角,這樣做的好處是只使用1個圖片,即可以實現任何大小,任何背景顏色的box圓角,但缺點就是需要多余的HTML代碼,代碼如下:
<style type="text/css"> .b_box_ie{ text-align:center;width:200px;line-height:60px; background-color:#DBEAFF; position:relative; } .b_r{width:3px;height:3px;font-size:0;background:url(http://pic002.cnblogs.com/img/bearstar/201006/2010062419324216.gif) no-repeat;position:absolute;} .r_1{top:0;left:0;} .r_2{background-position:-3px 0;top:0;right:0;} .r_3{background-position:0 -3px;left:0;bottom:0;} .r_4{background-position:-3px -3px;bottom:0;right:0;}<style> <div class="b_box_ie"> CSS 小技巧 <div class="b_r r_1"></div> <div class="b_r r_2"></div> <div class="b_r r_3"></div> <div class="b_r r_4"></div> </div>
因我切的圖片是gif,而不是png,所以效果不太好看(不像真真的圓角)。效果如下:
陰影效果
大家注意我簽名的陰影效果,如果要實現這樣的效果,使用圖片,切圖都很麻煩,讓我們看看css如何實現吧,代碼:
.b_shadow{ height:60px;line-height:60px; width:200px;border:1px solid #C0C0C0;background-color:#DBEAFF; -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); /*IE6,IE7語法*/ filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=5, OffY=5, Color='gray'); /*IE8語法,可惡的IE,不同的版本還要寫的不一樣*/ -ms-filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=5, OffY=5, Color='gray')" }
注:針對IE的filter,再測試過程中發現必須加height和background-color,如果不設置height,則無陰影效果,如果不設置背景色,則陰影效果不是作用在box 上,而是在文字上,原因不是很清楚,有興趣的同學可以自己測下。
漸變效果:
這個效果也應該也是用的最多的,這次先上效果:
代碼:
.gradients{ text-align:center;width:200px;line-height:60px; background-image: -moz-linear-gradient(top, #BDD738, #7E9516); background-image: -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#BDD738,endColorstr=#7E9516)"; }
按鈕發光效果:
這個效果在我簽名中的評論按鈕實現了(我簽名的效果沒有考慮IE6,IE7),大家看到那幾個按鈕,都有些發光效果,而且鼠標移上去也有效果,可能有人看到以為我用了很多圖片,其實只用了2個png圖片,1個圖片是上半部分完全透明,下半部分半透明,另1個圖片是上半部分半透明,下半部分完全透明。用這2個圖片+背景色就可以實現所有按鈕的發光效果。因為我的簽名中使用data:image/png;base64嵌入的圖片,所以不支持IE6,IE7。
DEMO效果(該效果在IE6下看不出來,是因為沒有對PNG進行處理):
代碼:
<style> .b_btn{ padding:5px 10px;color: #fff; background:url(http://pic002.cnblogs.com/img/bearstar/201006/2010062420253961.png) repeat-x; text-decoration: none;font-weight: bold; } .b_btn:hover{ background:url(http://pic002.cnblogs.com/img/bearstar/201006/2010062420254656.png) repeat-x; }</style> <a class="b_btn" href="javascript:void(0);" style="background-color:#2daebf;">精彩推薦</a> <a class="b_btn" href="javascript:void(0);" style="background-color:#e33100;">水平一般</a>
PS:本文中只是做一些簡單的介紹,每種效果都沒做很詳細的說明,對于具體方法的使用,請大家自己查查資料。