Transform字面上就是變形,改變的意思。
在CSS3中transform主要包括以下幾種:旋轉rotate、扭曲skew、縮放scale和移動translate以及矩陣變形matrix。下面我們一起來看看CSS3中transform的旋轉rotate、扭曲skew、縮放scale和移動translate具體如何實現,老樣子,我們就從transform的語法開始吧。
1 2 3 | transform : none | <transform-function> [ <transform-function> ]* // 也就是 transform: rotate | scale | skew | translate |matrix; |
表示不進麼變換;
表示一個或多個變換函數,以空格分開;換句話說就是我們同時對一個元素進行transform的多種屬性操作,例如rotate、scale、translate三種,但這裡需要提醒大家的,以往我們疊加效果都是用逗號(「,」)隔開,但transform中使用多個屬性時卻需要有空格隔開。大家記住了是空格隔開。 transform屬性實現了一些可用SVG實現的同樣的功能。它可用於內聯(inline)元素和塊級(block)元素。它允許我們旋轉、縮放和移動元素 ,他有幾個屬性值參數:rotate;translate;scale;skew;matrix
01-transform-origin 起始點/基點
transform-origin 屬性允許您改變被轉換元素的位置。2D 轉換元素能夠改變元素 x 和 y 軸。3D 轉換元素還能改變其 Z 軸。
1 | transform-origin: x-axis y-axis z-axis; |
x-axis 值:eft、center、right、length、%
y-axis 值:eft、center、right、length、%
z-axis 值:length
transform 的起始點,一般來說變形的起始點都在物件的中心點,但如果需要像時鐘的分秒針一樣,中心點並不再物件的中心,就需要靠transform-origin去設定物件變形的起始點。
See the Pen css-transform-rotate(xxdeg) by Jimmy_Wu (@Jimmy_Wu) on CodePen.
在html裡的基準點都是從左上開始,從水平開始往右稱為x軸,垂直往下稱為y軸,CSS在編寫習慣上也是先寫x軸再寫y軸,如50px 100px,結果會是x軸向右50px,y軸垂直向下100px。而tranaform的屬性中,坐標將是相當重要的關鍵。
transform的起始點,一般來說變形的起始點都在物件的中心點,但如果需要像時鐘的分秒針一樣,中心點並不再物件的中心,就需要靠transform-origin去設定物件變形的起始點。
02-旋轉Rotate
通過指定的角度參數對原元素指定一個2D rotation(2D 旋轉),需先有transform-origin屬性的定義。transform-origin定義的是旋轉的基點,其中angle是指旋轉角度,如果設置的值為正數表示順時針旋轉,如果設置的值為負數,則表示逆時針旋轉。
如:transform:rotate(30deg):
See the Pen css-transform-rotate(xxdeg)-改定位點 by Jimmy_Wu (@Jimmy_Wu) on CodePen.
設定rotate旋轉50度,並沒有設定起始點。因為此時的物件預設值坐標是50% 50%,D變形物件會依起始點開始作變形,如範例中就是從x-0 y-0,左上角開始跑,所以在設定transform必須要清楚瞭解到要變型物件的起始點。
03-縮放Scale
Scale是屬於transform2D的縮放變形效果,值為x軸及y軸倍率,而他一樣會受物件起始點的影響。
例如:transform:scale(2,1.5)
See the Pen css-transform-scale+origin by Jimmy_Wu (@Jimmy_Wu) on CodePen.
04-移動translate
移動 translate 分為三種情況:
- translate(x,y)水平方向和垂直方向同時移動(也就是X軸和Y軸同時移動)
- translateX(x)僅水平方向移動(X軸移動)
- translateY(Y)僅垂直方向移動(Y軸移動)
See the Pen css-transform-translate by Jimmy_Wu (@Jimmy_Wu) on CodePen.
05-扭曲skew
扭曲skew和translate、scale一樣同樣具有三種情況
- kew(x,y)使元素在水平和垂直方向同時扭曲(X軸和Y軸同時按一定的角度值進行扭曲變形)
- skewX(x)僅使元素在水平方向扭曲變形(X軸扭曲變形)
- skewY(y)僅使元素在垂直方向扭曲變形(Y軸扭曲變形)
See the Pen css-transform-扭曲skew by Jimmy_Wu (@Jimmy_Wu) on CodePen.
06-Rotate 3D
3D也不例外,如果設定好基準點,物件才能依設定的軸心旋轉,如果把軸心放在最左邊及最右邊,就可以向上方這開門的效果。
See the Pen css-transform-scale+origin+Rotate 3D by Jimmy_Wu (@Jimmy_Wu) on CodePen.
資料來源:
CSS沒有極限 – CSS transform-origin 起始點
Airen的博客-CSS3 Transform