1. 用jquery的css方法获取transform得到的是矩阵matrix,不利于获取translate的值,
优先使用dom.style.webKitTransform进行transform的读写

2. 从transform中读取translate的值方法

//jquery版本
function fGetTranslate($obj,type){
var transformMatrix = obj.css("-webkit-transform") ||
obj.css("-moz-transform") ||
obj.css("-ms-transform") ||
obj.css("-o-transform") ||
obj.css("transform");
var matrix = transformMatrix.replace(/[^0-9\-.,]/g, '').split(',');
var x = matrix[12] || matrix[4]; //translate x
var y = matrix[13] || matrix[5]; //translate y
if(type == 'x'){
return x;
}
else if(type == 'y'){
return y;
}
return '';
}
//dom版本
function fGetTranslate(obj,type){
var transform = obj.style.webkitTransform || obj.style.transform;
var aTrans = transform.replace(/[^0-9\-.,]/g, '').split(','),
res = '';
switch(type){
case 'x':
res = parseInt(aTrans[0]);
break;
case 'y':
res = parseInt(aTrans[1]);
break;
case 'z':
res = parseInt(aTrans[2]);
break;
default:
break;
}
return res || '';
}

 3.tansform的效果会按照层级进行叠加,在父元素上的动画会叠加到子元素上,子元素上的多个动画也可以拆分为

多层元素的多个动画

<div style="transform:translate(-10px,-20px) scale(2) rotate(45deg) translate(5px,10px)"></div>

其变换结果等效于:

<div style="transform:translate(-10px,-20px)">
<div style="transform:scale(2)">
<div style="transform:rotate(45deg)">
<div style="transform:translate(5px,10px)">
</div>
</div>
</div>
</div>

4.transform动画的逆转,必须将父元素的transform值倒过来写,值改为负值

<div style="transform:rotate(30deg) skew(45deg)">
<div style="transform:skew(-45deg) rotate(-30deg)">
</div>
</div>

5.transform-origin与translate的等价性

transformation matrix是这样计算规则:

[1] 从一个单位矩阵(identity matrix)开始
[2] 根据transform-origin的x、y、z坐标值,进行平移(translate)
[3] 从左向右依次对transform里的变换函数执行乘法
[4] 根据transform-origin的x、y、z坐标值,进行反向平移

transform-origin是使用translate进行两次方向相反的平移,transform-origin是translate的语法糖。

.avatar{
transform: rotate(30deg);
transform-origin: 200px 300px;
}

等效于:

.avatar{
transform: translate(200px, 300px) rotate(30deg) translate(-200px, -300px);
transform-origin: 0 0;
}

6.transform的matrix的含义

transform: matrix(a,b,c,d,e,f)

e和f 代表着偏移量translate,x和y轴
a和d 代表着缩放比例scale,x 和y轴
b和c 代表着斜切skew(具体参数和角度关系为, b-->tanθ y轴 c-->tanθ x轴 ,我们具体操作的时候还是要使用小数的)
abcd 四个参数代表着旋转,旋转 = 缩放 + 斜切(具体关系待查)

参考:https://segmentfault.com/a/1190000007421401
     https://segmentfault.com/a/1190000010688390?_ea=2553323

最新文章

  1. html5之canvas画图
  2. 【POJ 1094】拓扑排序
  3. 1503 - A PRIMARY KEY must include all columns in the table&#39;s partitioning function
  4. Java版本的在指定目录及子目录下创建指定的文件
  5. Redis跟Spring整合,sentinel模式
  6. QTP自动化测试-打开运行报告
  7. Bootstrap3 模态框 select2搜索框无法输入
  8. Azure Pipelines-部署代理问题
  9. 第十九节:Java基本数据类型,循环结构与分支循环
  10. OAuth2.0 知多少(好)
  11. 解决启动mongod 时,出现addr already in use错误
  12. 《java语言程序设计》初步学习——各种小Demo
  13. angular性能优化心得
  14. Codeforces Round #306 (Div. 2)A B C D 暴力 位/暴力 暴力 构造
  15. 剖析ironic
  16. [转载] 无所不能的“蚂蚁”--Ant
  17. python with和上下文管理工具
  18. iOS奔溃日志信息统计使用笔记
  19. spring-pool.xml
  20. 【MFC】可以换行的编辑框

热门文章

  1. 分词,复旦nlp,NLPIR汉语分词系统
  2. 操作表单 -------JavaScrip
  3. innobackup 参数
  4. Install Jenkins 2.1.36 and openjdk 1.7.0 on centos 7
  5. Python 正则表达式 匹配任意字符
  6. centos7.3网络配置
  7. 适合学习的QT开源项目-SerialTool
  8. Appium环境搭建及“fn must be a function”问题解决
  9. HashMap的实现原理和底层数据结构
  10. BZOJ 4971: [Lydsy1708月赛]记忆中的背包