睡蓮‧池水間

Guest
2012-Feb-12  
0 位會員和 9 位訪客在線上

文章 :: 語言集

background的clip與origin

不詳 
background-clip和background-origin是CSS3中新加的background module屬性,用來確定背景的定位。

background-clip用來判斷background是否包含border區域。而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區域。如果background-image圖片有多個,對應的background-clip值之間用逗號分隔。

對於background-origin:

如果是padding值,則position相對於padding邊緣("0 0" 為 padding邊緣的左上角,而“100% 100%”為右下角)。如果是border值,則意味著相對border邊緣。而border值則相對於內容邊緣。與background-clip相同,多個值也用逗號分隔。如果background-clip是padding 值,background-origin是border值,並且background-position是 “top left”(默認初始值),則背景圖左上角將會被截取掉部分。

這兩個屬性僅從CSS3才出現,在未使用該屬性background module中的默認表現又如何呢?

background-clip 默認類似於 background-clip:border。
background-origin 默認類似於 background-origin:padding。

但IE又是特例(It sucks)。

在IE6、IE7中,一般元素(button等除外)的背景相當於:background-clip:border; background-origin:border;

而hasLayout的元素(加上button等)的背景則相當於:background-clip:padding;background-origin:padding;

這一對 CSS3 屬性已在 Mozilla, Safari 3 和 Konqueror 等瀏覽器中實現,不過都是通過其私有屬性的表達方式。

基本非 IE 的瀏覽器的私有屬性一般都會以 -xxx- 這樣開始,-o-就是以 Presto 為引擎的 Opera 私有的、-icab- 是 iCab 私有的,-khtml- 是以 KHTML 為引擎的瀏覽器(如 Konqueror Safari)、-moz- 就是以 Mozilla 的 Gecko 為引擎的瀏覽器(如Firefox,Mozilla)、-webkit- 就是以 Webkit 渲染引擎(是 KHTML 的衍生產品)的瀏覽器(如 Safari、Swift)。

即支持的私有屬性分別為:

-moz-background-clip
-webkit-background-clip
-khtml-background-clip
-moz-background-origin
-webkit-background-origin
-khtml-background-origin 

下面舉個運用 background-origin 屬性的簡單例子,效果如下圖:


HTML 部分:

<button>這裏是按鈕,是鈕不是妞</button>

CSS 部分(詳細見註釋):

button {
	display:inline-block;/*觸發hasLayout*/
	height:26px;
	padding:0 20px;
	cursor:pointer;
	*overflow:visible;/*消除IE按鈕左右padding隨字數長度變化的BUG*/

	border:3px double #95071b;/*用3px 雙邊來模擬設計圖中的白線*/
	border-right-color:#650513;
	border-bottom-color:#650513;

	background-color:#95071b;

	/*設置背景裁切方式和參考線*/
	-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下無法實現。

當然這只是一種對HTML代碼有潔癖的解決方法(限於對background-clip和background-origin屬性的學習和理解),當然也可嘗試其他方法,也許會使CSS更簡潔,至於各種方法的優缺點自己衡量。

    «« 欲練 CSS ,必先宮 IE 小談分辨率 »»    

專題

引用

  • 文章地址: http://waterlily-lsl.com/modules/article/view.article.php/c2/73
  • 引用地址: http://waterlily-lsl.com/modules/article/trackback.php/73

評分

10
9
8
7
6
5
4
3
2
1


 

API: RSS | RDF | ATOM

回覆及設定

    關閉


 

最 新 發 表 及 資 訊 區

此為池水間 banner ,需要安裝 Adobe Flash Player 才能觀看內容。

最新留言

最新留言:2012-Jan-6 11:13am
留言編號:76
留言者: wuji888
網主回覆:
總留言數: 71

前往萍踪留影

造訪統計

今天:308
昨天:544
本週:308
本月:6148
總計:376532
平均:292

連結

Powered By XOOPS
Valid XHTML 1.1
Valid CSS 3
登 入