轉載請說明出處,原文地址http://blog.sina.com.cn/s/blog_780a942701014xl8.html
transform(變形)和transform-origin(變形原點)
目前這兩個屬性得到了除去ie以外各個主流瀏覽器webkit,firefox,opera的支持,屬性名分別為
-webkit-transform,-moz-transform,-o-transform;
1、改變元素基點transform-origin
- transform-origin是變形原點,也就是該元素圍繞着那個點變形或旋轉,該屬性只有在設置了transform屬性的時候起作用;
- 因為我們元素默認基點就是其中心位置,換句話說我們沒有使用transform-origin改變元素基點位置的情況下,transform進行的rotate,translate,scale,skew,matrix等操作都是以元素自己中心位置進行變化的。
- 但有時候我們需要在不同的位置對元素進行這些操作,那么我們就可以使用transform-origin來對元素進行基點位置改變,使元素基點不在是中心位置,以達到你需要的基點位置。
- 下面我們主要來看看其使用規則:
transform-origin(X,Y):用來設置元素的運動的基點(參照點)。默認點是元素的中心點。其中X和Y的值可以是百分值,em,px,其中X也可以是字符參數值left,center,right;Y和X一樣除了百分值外還可以設置字符值top,center,bottom 。
- 語法:-moz-transform-origin: [ | | left | center | right ][ | | top | center | bottom ] ?
- transform-origin接受兩個參數,它們可以是百分比,em,px等具體的值,也可以是left,center,right,或者 top,center,bottom等描述性參數 ;
- top left | left top 等價於 0 0;
- top | top center | center top 等價於 50% 0
- right top | top right 等價於 100% 0
- left | left center | center left 等價於 0 50%
- center | center center 等價於 50% 50%(默認值)
- right | right center | center right 等價於 100% 50%
- bottom left | left bottom 等價於 0 100%
- bottom | bottom center | center bottom 等價於 50% 100%
- bottom right | right bottom 等價於 100% 100%
其中 left,center right是水平方向取值,對應的百分值為left=0%;center=50%;right=100%
而
top center bottom是垂直方向的取值,其中top=0%;center=50%;bottom=100%;
如果只取一個值,表示垂直方向值不變。
注:
transform-origin並不是transform中的屬性值,他具有自己的語法。
但是他要結合transform才能起作用。
例子:
初始態:
.heart{ position:relative; width:100px; height:80px; background:blue;}
.heart:before{ position:absolute; content:""; left:50px;top:0;width:50px;height:80px; background:red;border-radius: 50px 50px 0 0;}
取基點為左下角,逆時針轉45deg
.heart{ position:relative; width:100px; height:80px; background:blue;}
.heart:before{ position:absolute; content:""; left:50px;top:0;width:50px;height:80px; background:red;border-radius: 50px 50px 0 0; -webkit-transform: rotate(-45deg); -webkit-transform-origin: 0 100%;}
取右下角為基點旋轉:
.heart{ position:relative; width:100px; height:80px; background:blue;}
.heart:before{ position:absolute; content:""; left:50px;top:0;width:50px;height:80px; background:red;border-radius: 50px 50px 0 0; -webkit-transform: rotate(-45deg); -webkit-transform-origin: 0 100%;}
.heart:after{ position:absolute; content:""; left:0px;top:0;width:50px;height:80px; background:yellow;border-radius: 50px 50px 0 0; -webkit-transform: rotate(45deg); -webkit-transform-origin: 100% 100%;}
.heart:before,.heart:after{ position:absolute; content:""; top:0;width:50px;height:80px; background:red;border-radius: 50px 50px 0 0;}
.heart:before{ left:50px; -webkit-transform: rotate(-45deg); -webkit-transform-origin: 0 100%;}
.heart:after { left: 0; -webkit-transform: rotate(45deg); -webkit-transform-origin: 100% 100%;}
2、transform
- transform屬性可用於內聯(inline)元素和塊級(block)元素。它允許我們旋轉、縮放和移動元素,他有幾個屬性值參數:
- rotate(旋轉)允許你通過傳遞一個度數值來轉動一個對象;
- scale是一個縮放功能,可以讓任一元素變的更大。它使用一個或者兩個正數和負數以及小數作為參數;當使用一個參數時表示X軸和Y軸的縮放相同;
- translate就是基於X和Y 坐標重新定位元素,當使用一個參數時表示X軸和Y軸的參數相同;
- skew傾斜(ps中的斜切),參數是度數,當使用一個參數時表示X軸和Y軸的參數相同;
- matrix矩陣變換,就是基於X和Y 坐標重新定位元素,它使用6個參數