首页 > transform总结

transform总结

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 xvar y = matrix[13] || matrix[5]; //translate yif(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

转载于:https://www.cnblogs.com/mengff/p/7520609.html

更多相关:

  • 最近总是纠结去哪里吃饭,所以就想着做了一个色子,也算是朝花夕拾了,最后做出来的是一个旋转的立方体,整体美感还好:实现了永久旋转,悬浮停止和突出及一个分散的效果:以下是代码: 立方体旋转</titl... </p> </div> </div> </li><li> <div class="arcTitle clearfix"> <h3><a href="//11gx.com/uev7jsyfkg/" target="_blank">vue中轻松搞掂鼠标气泡框提示框tip跟随</a></h3> </div> <div class="clearfix"> <div class="arcDes"> <p>    <template><div><!-- 提示框 --><sg-tip :show="isShowTip">{{tipContent}}</sg-tip><!-- 移入某个元素触发显示跟随提示框显示--><div class="red" @mouseover="showTip($event.target.innerText)... </p> </div> </div> </li><li> <div class="arcTitle clearfix"> <h3><a href="//11gx.com/14bwrn6exv/" target="_blank">常用广告类型的包装代码示例</a></h3> </div> <div class="clearfix"> <div class="arcDes"> <p>flash类型的广告的包装代码 <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'> <html> <head>... </p> </div> </div> </li><li> <div class="arcTitle clearfix"> <h3><a href="//11gx.com/o12mraiyqg/" target="_blank">js控制图片的缩放代码示例</a></h3> </div> <div class="clearfix"> <div class="arcDes"> <p>下面的代码给出一个简单的js检测鼠标点击事件来动态放大图片的功能,这个功能在亚马逊,京东等电商网站很实用。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <... </p> </div> </div> </li><li> <div class="arcTitle clearfix"> <h3><a href="//11gx.com/0ivbgwtxdr/" target="_blank">一小时Thinkphp后台(2)</a></h3> </div> <div class="clearfix"> <div class="arcDes"> <p>之前我们已经写好管理员页面,现在对功能继续实现 基础功能1:对管理进行增删改查 增加 需要在view中新建一个add.html add.html <!DOCTYPE html> <html> <head><title>

  • 像素存储 OpenCV 中图像矩阵的大小取决于所用的颜色模型,更准确的说是取决于图像所用到的通道数。 如果使用的是灰度图,矩阵大概如图所示: 如果使用的是多通道的图像,矩阵中的列会包含多个子列,子列的个数和通道数相等。例如 RGB 颜色模型的矩阵大致如下图所示: 很多情况下,因为内存足够大,可以实现连续存储,因此图像中的各行能够...