【发布时间】:2017-02-28 12:35:14
【问题描述】:
首先,这是我的问题的小提琴:
https://jsfiddle.net/0u74faz6/1/
基本上,我在一个容器中有一个图像,它本身就在另一个容器中。放大图像后,使用滑块可能不适合其父容器。然后我使用 CSS translate 来平移图像。这会设置两个变量 translateX 和 translateY(请参阅 makeImageDraggable 方法)。平移到某个位置后,我希望能够:
在放大时,从该点开始放大。 在向下缩放的同时,从这个点缩小到中心
Windows 照片查看器正是这样做的,以小提琴中的照片为例,您可以缩放图像,平移到女人的头发并再次缩放,它会放大头发。当你缩小时,它从头发开始到中心,同时保持图像在 div 中的中心位置。
我使用的主要代码在方法 scaleImage 中,这里:
translateX = translateX/scale, translateY = translateY/scale;
img.style.transform = 'scale3d(' + currentScale + ',' + currentScale + ', 1) ' + 'rotate(' + (currentRotation -90) + 'deg)';
parent.style['-webkit-transform'] = 'translate(' + translateX + 'px, ' + translateY + 'px)';
有人可以帮忙吗?
【问题讨论】:
-
我写了一个函数,可以获取图像的变换原点(如“左上”等),它似乎工作正常。我现在的问题是知道每次缩小图像时要翻译多少我的父 div。实际上,缩小时图像有时会有边距
标签: javascript css scale css-transforms translate