【发布时间】:2016-04-15 07:03:24
【问题描述】:
我正在尝试缩放图像并让它从原点正确转换(基本上是捏缩放)。我正在尝试找到一个不涉及更改 transform-origin 的解决方案,因为它会使查找图片的左/上边缘变得复杂,而我使用的不仅仅是这个问题。
这更像是一道数学题。 我无法根据原点想出一个公式来确定要翻译多少图像。我计算出的当前方程不能正确地从一个点缩放。关于演示,当用鼠标滚动时,图像应该从鼠标指针上弹出。
我不是在寻找解决方法或替代设计。如前所述,我无法修改 transform-origin 属性。
演示:https://jsfiddle.net/dook/ort0efjd/
矩阵变换函数
function transform() {
var matrix = [dim.new_scale, 0, 0, dim.new_scale, dim.new_x, dim.new_y].join(",");
image_center.css({
"transform": "matrix(" + matrix + ") translate3d(0, 0, 0)",
"-webkit-transform": "matrix(" + matrix + ") translate3d(0, 0, 0)",
"-moz-transform": "matrix(" + matrix + ") translate3d(0, 0, 0)",
});
}
鼠标滚轮事件
// Determine mousewheel pointer in relation to picture origin
var offset = image_center.offset();
var originX = ev.originalEvent.pageX - offset.left;
var originY = ev.originalEvent.pageY - offset.top;
// truncated --- new_scale is modified
// Translate based on pointer origin -- This is where I need help
dim.new_x = originX + dim.height * (dim.new_scale - 1);
dim.new_y = originY + dim.height * (dim.new_scale - 1);
// truncated -- Keep image within constraints
transform(); // Applies everything in dim to CSS transform matrix
【问题讨论】:
-
你想做什么? JSFiddle 似乎在某些方面起作用。
-
我不明白到底是什么不工作?
-
我更新了问题以(希望)让我的问题更清楚。
标签: javascript css math matrix