transform 之后的坑 scale rotate draggable

1 scale之后

1-1元素宽高

获取元素真实宽高
原生写法

var rect = obj.getBoundingClientRect(); 
var pw = rect.width;
var ph = rect.height;

1-2

元素的位置
此时通过jquery position获取到的left top值要乘以scale的倍数
或者

var rect = obj.getBoundingClientRect(); 
var left = rect.left;
var top = rect.top;

1-3 因为transform scale之后 jquery ui 的 draggable方法失灵

解决方案:

1-4

transform scale 之后要translate
translate的大小为

var translateX = elem.outerWidth() * (scaleRatio - 1) / 2;
var translateY = elem.outerHeight() * (scaleRatio - 1) / 2;

1-5 translate 之后要设置margin值

  "margin-left": -translateX + "px"
  "margin-top": -translateY + "px"

1-6 有一个打包的问题

网上看很多人遇到了 transform : scale(2,2) translate(200px,200px); 在css中这样写之后,使用webpack打包后说是scale不再生效,建议使用transform :martix(2,2,200,200)

至此,踩坑结束。

2 rotate 之后
你就要运用数学方法了
使用外切矩形的宽高作为宽高计算

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...