CSS3中確定背景的定位的新方法
本文向大家描述一下CSS3中新增加的background-clip和background-origin屬性的用法,它們主要用來確定背景的定位,其中background-clip用來判斷background是否包含border區(qū)域。而background-origin用來決定background-position計算的參考位置。
CSS3中新增加的background-clip和background-origin屬性簡介
background-clip和background-origin是CSS3中新加的backgroundmodule屬性,用來確定背景的定位。
background-clip用來判斷background是否包含border區(qū)域。而background-origin用來決定background-position計算的參考位置。
語法為:
background-clip:[border|padding][,[border|padding]]*
background-origin:[border|padding|content][,[border|padding|content]]*
對于background-clip:
如果是padding值,則background忽略padding邊緣,border是透明的。如果是border值,則background包括border區(qū)域。如果background-image圖片有多個,對應(yīng)的background-clip值之間用逗號分隔。
對于background-origin:
如果是padding值,則position相對于padding邊緣(”00″為padding邊緣的左上角,而“100%100%”為右下角)。如果是border值,則意味著相對border邊緣。而border值則相對于內(nèi)容邊緣。與background-clip相同,多個值也用逗號分隔。如果background-clip是padding值,background-origin是border值,并且background-position是“topleft”(默認(rèn)初始值),則背景圖左上角將會被截取掉部分。
◆這兩個屬性僅從CSS3才出現(xiàn),在未使用該屬性backgroundmodule中的默認(rèn)表現(xiàn)又如何呢?
background-clip默認(rèn)類似于background-clip:border。
background-origin默認(rèn)類似于background-origin:padding。
但I(xiàn)E又是特例(Itsucks)。
在IE6、IE7中,一般元素(button等除外)的背景相當(dāng)于:background-clip:border;background-origin:border;
而hasLayout的元素(加上button等)的背景則相當(dāng)于:background-clip:padding;background-origin:padding;
這一對CSS3屬性已在Mozilla,Safari3和Konqueror等瀏覽器中實(shí)現(xiàn),不過都是通過其私有屬性的表達(dá)方式。
基本非IE的瀏覽器的私有屬性一般都會以-xxx-這樣開始,-o-就是以Presto為引擎的Opera私有的、-icab-是iCab私有的,-khtml-是以KHTML為引擎的瀏覽器(如KonquerorSafari)、-moz-就是以Mozilla的Gecko為引擎的瀏覽器(如Firefox,Mozilla)、-webkit-就是以Webkit渲染引擎(是KHTML的衍生產(chǎn)品)的瀏覽器(如Safari、Swift)。
◆即支持的私有屬性分別為:
ExampleSourceCode
- -moz-background-clip
- -webkit-background-clip
- -khtml-background-clip
- -moz-background-origin
- -webkit-background-origin
- -khtml-background-origin
◆下面舉個運(yùn)用background-origin屬性的簡單例子,效果如下圖:
HTML代碼:
ExampleSourceCode
- <button>這里是按鈕,是鈕不是妞button>
CSS代碼:
ExampleSourceCode
- button{
- display:inline-block;/*觸發(fā)hasLayout*/
- height:26px;
- padding:020px;
- cursor:pointer;
- *overflow:visible;/*消除IE按鈕左右padding隨字?jǐn)?shù)長度變化的BUG*/
- border:3pxdouble#95071b;/*用3px雙邊來模擬設(shè)計圖中的白線*/
- border-right-color:#650513;
- border-bottom-color:#650513;
- background-color:#95071b;
- /*設(shè)置背景裁切方式和參考線*/
- -moz-background-clip:padding;
- -webkit-background-clip:padding;
- -khtml-background-clip:padding;
- -moz-background-origin:padding;
- -webkit-background-origin:padding;
- -khtml-background-origin:padding;
- /*向前兼容*/
- background-clip:padding;
- background-origin:padding;
- color:#fff;
- font-size:12px;
- line-height:20px;
- /*修正IE6下高度問題*/
- _padding-top:2px;
- _line-height:14px;
- }
不足之處:此效果在Opera下無法實(shí)現(xiàn)。當(dāng)然這只是一種對HTML代碼有潔癖的解決方法(限于對background-clip和background-origin屬性的學(xué)習(xí)和理解),當(dāng)然也可嘗試其他方法,也許會使CSS更簡潔,至于各種方法的優(yōu)缺點(diǎn)由您自己衡量。
【編輯推薦】
- CSS3八大新功能閃亮登場
- CSS布局中float和position屬性使用技巧
- 檢測瀏覽器是否支持CSS3的方法
- 揭秘HTML 5和CSS3 Web實(shí)現(xiàn)飛躍的踏板
- CSS布局中display:inline-block屬性用法詳解