window.getComputedStyle("element")[property]
获取最终计算后的元素的所有样式的值,获取的样式是只读的。
通过window.getComputedStyle("element")[‘transform’]
是matrix(a,b,c,d,e,f)
- translate值 x:e,y:f
transform: matrix(1, 0, 0, 1, 30, 30);就等同于transform: translate(30px, 30px); - 缩放scale
transform: matrix(1, 0, 0, 1, 30, 30);
x:a,y:d
如果比例是s那么得到的是:
matrix(s, 0, 0, s, 0, 0);
等同于scale(sx, sy);
skew 和 rotate 用矩阵运算的话比较复杂,需要用到三角函数,平时设置的话一般不用matrix,对于复杂的效果可以使用matrix,getComputedStyle得到的transform是matrix,所以在这里重点看了大神的文章。
transform-origin是矩阵运算的依据点,一般都是标签的中心点,也可以设置他的属性:center bottom等。
translate(0px,0px)是没有发生任何偏移的,transform所有的属性都是相对原点偏移的。
看波同学的 前端基础进阶(十):面向对象实战之封装拖拽对象 每次鼠标按下拿到的都是transform的值,而transform的值是相对原点的。e.pageX是相对页面坐标系的,虽然二者参考坐标系不同,但是他们横坐标和纵坐标移动的距离都是相同的。所以下面的公式是成立的:
移动后的鼠标位置 - 鼠标初始位置 = 移动后的目标元素位置 - 目标元素的初始位置