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%;
如果只取一個值,表示垂直方向值不變。
例子:
初始態:
.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%;}