transform是css3新增的一个属性,但是令开发者费解的是,其内部又有大量的属性如旋转、缩放、扭曲、平移,这也就致使了获取或者是设置transform中一个或者多个属性变得异常麻烦。javascript
固然这里transformjs没有提供诸如:animate({scaleX:2,ratation:60},500)的方法,开发者能够基于transform.js自行去封装,transformjs都这么便利了,结合tween也好,或者利用transition也好,封装一个animate方法应该很是简单。说白了,transformjs只负责让开发者经过简单的赋值操做,让dom变化。css
这里是没有使用任何模块化开发框架,直接暴露在window下的使用代码:前端
var element = document.querySelector("#testTransform"); //只需这一行代码 transform.mix(element); //element就可以72变 element.rotation++; element.scaleX = 2; element.scaleY = 3;
固然还能够设置诸如:x, y, scaleX, scaleY, rotation, skewX, skewY, regX, regY等属性。java
其中x对应translateX、y对应translateY、rotation对应rotateZ,regX和regY至关于设置transform-origin。其他属性和transform一致。目前不支持3dcss3
transformjs依赖 observablejs用于响应属性改变,自动更新元素显示状态。
transformjs依赖 matrix2D用于将元素的transform属性转换为2*3的矩阵,而后赋值给dom的style的transform属性。见核心代码:git
observer.propertyChangedHandler = function () { var mtx = self.element.matrix2D.identity().appendTransform(self.element.x, self.element.y, self.element.scaleX, self.element.scaleY, self.element.rotation, self.element.skewX, self.element.skewY, self.element.regX, self.element.regY); self.element.style.transform = self.element.style.msTransform = self.element.style.OTransform = self.element.style.MozTransform = self.element.style.webkitTransform = "matrix(" + [mtx.a, mtx.b, mtx.c, mtx.d, mtx.tx, mtx.ty].join(",") + ")"; }
http://kmdjs.github.io/transformjs/github
https://github.com/kmdjs/kmdjsweb
在使用中有任何问题,欢迎反馈给我,能够用如下联系方式跟我交流app