transform是CSS3中加入的控制元素變換的新屬性(其實早在2003年的SVG1.1標準中就已經成爲W3C標準,能夠做爲一個元素的屬性使用),能夠用它實現元素的位移(translate)、縮放(scale)、旋轉(rotate)、扭曲(skew)。和transition
屬性配合使用能夠實現各類酷炫的動畫效果。css
CSS提供了各類變換對應的屬性方法html
.trans_translate { transform: translate(10px, 20px); } .trans_scale { transform: scale(1, 0.5); } .trans_rotate { transform: rotate(45deg); } .trans_skew { transform: skew(35deg); }
這樣的使用方式能夠讓使用者方便理解,使用起來更加容易。但事實上transform的實現遠不止看上去那麼簡單,transform的全部變換都是經過矩陣(matrix)來實現的node
WEB中的矩陣變換有2D和3D兩種,本文主要描述matrix2d的狀況css3
二維圖形的變換可歸納爲上述四種形式,而這四種形式均可以化爲基本的矩陣運算:git
縮放、旋轉變換都與參考點有關,上面進行的各類變換都是以原點爲參考點的。若是相對某個通常的參考點(_xf_,_yf_)做縮放、旋轉變換,至關於將該點移到座標原點處,而後進行縮放、旋轉變換,最後將(_xf_,_yf_)點移回原來的位置。切記複合變換時,先做用的變換矩陣在右端,後做用的變換矩陣在左端。github