JavaScript 图像缩放与 CSS3 变换,如何计算原点? (举例)

2024-02-04

我正在尝试实现图像缩放效果,有点类似于 Google 地图的缩放效果,但具有固定位置图像网格。

我已经在这里上传了到目前为止我所拥有的示例:

http://www.dominicpettifer.co.uk/Files/MosaicZoom.html http://www.dominicpettifer.co.uk/Files/MosaicZoom.html

(使用 CSS3 转换,因此仅适用于 Firefox、Opera、Chrome 或 Safari)

使用鼠标滚轮放大/缩小。 HTML 源基本上是一个带有内部 div 的外部 div,并且该内部 div 包含使用绝对位置排列的 16 个图像。基本上这将是一个照片马赛克。

我已经使用 CSS3 转换来使用缩放位:

$(this).find('div').css('-moz-transform', 'scale(' + scale + ')');

...但是,我依靠外部 div 上的鼠标 X/Y 位置来放大鼠标光标所在的位置,类似于 Google 地图的功能。问题是,如果您放大图像,将光标移动到左下角并再次缩放,它会缩放到整个马赛克的下/左,而不是缩放到图像的下/左角。当您在移动鼠标(甚至是轻微移动)的同时放大更近时,这会产生在马赛克周围跳跃的效果。

这基本上就是问题所在,我希望缩放功能与 Google 地图完全一样,它可以精确缩放到鼠标光标位置所在的位置,但我无法集中精力数学来正确计算变换原点:X/Y 值。请帮忙,已经被困在这个问题上三天了。

以下是鼠标滚轮事件的完整代码清单:

var scale = 1;

$("#mosaicContainer").mousewheel(function(e, delta)
{
    if (delta > 0)
    {
        scale += 1;
    }
    else
    {
        scale -= 1;
    }
    scale = scale < 1 ? 1 : (scale > 40 ? 40 : scale);

    var x = e.pageX - $(this).offset().left;
    var y = e.pageY - $(this).offset().top;

    $(this).find('div').css('-moz-transform', 'scale(' + scale + ')')
        .css('-moz-transform-origin', x + 'px ' + y + 'px');

    return false;
});

终于弄清楚了,请看这里:

http://www.dominicpetifer.co.uk/Files/Mosaic/MosaicTest.html http://www.dominicpettifer.co.uk/Files/Mosaic/MosaicTest.html

使用鼠标滚轮进行缩放,也可以拖动图像,仅适用于最新的 Safari、Opera 和 Firefox(由于某些原因图像在 Chrome 上模糊)。在某些区域也有点问题。在 DocType 得到了很多帮助http://doctype.com/javascript-image-zoom-css3-transforms-calculate-origin-example http://doctype.com/javascript-image-zoom-css3-transforms-calculate-origin-example

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 图像缩放与 CSS3 变换,如何计算原点? (举例) 的相关文章

随机推荐

  • 为什么这段代码会抛出java.lang.NullPointerException?

    我找到了一个源代码 并将其添加到我的框架中 只是为了测试它使用 Java2D 但它有一个例外 我不明白为什么 我的课 package ClientGUI import java awt Dimension import java awt G
  • Git diff 提交范围中的双点“..”和三点“...”有什么区别?

    以下命令有什么区别 git diff foo master a git diff foo master b git diff foo master c 差异手册 http jk gs git diff html examples谈论它 比较
  • 仅 Firefox 中的疯狂 CSS 问题 - 位置固定和背景颜色

    请参阅此链接 http lsp2 tpdserver2 co uk test htm http lsp2 tpdserver2 co uk test htm 在 IE Chrome 中显示良好 但在 Firefox 6 0 1 中 蓝色标题
  • 将二进制文件读入数组

    我有一个由一系列 32 位有符号整数值 小端 组成的文件 如何将其读入数组 或类似 数据结构 我试过这个 block 4 while true do local int image read block if not int then br
  • R中随机森林的并行执行

    我在 R 中并行运行随机森林 library doMC registerDoMC x lt matrix runif 500 100 y lt gl 2 50 并行执行 耗时 73 秒 rf lt foreach ntree rep 250
  • C++中的函数指针语法

    我刚刚学习 C 中的函数指针 以下示例全部编译并返回预期结果 但我被告知示例 3 是正确的方法 为什么其他示例仍然有效 还有一件事看起来很奇怪 那就是例子f g h i与上面的示例相比 这并不全部有效 与示例 1 8 相比 它们为什么不起作
  • Spark Scala 流式 CSV

    我是 Spark Scala 的新手 我知道如何加载 CSV 文件 sqlContext read format csv 以及如何读取文本流和文件流 scc textFileStream file c path filename scc f
  • 如何更改 xamarin.android 中默认显示警报的背景颜色?

    我想更改显示警报的默认背景颜色 我在不同的网站上尝试了很多问题 谁能帮我 您可以使用以下方法实现此行为Rg Plugins Popup https github com rotorgames Rg Plugins Popup为了模仿默认显示
  • Spring webflux block、flatmap 和 subscribe 的区别

    我有一个api需要调用其他3个api 第二个和第三个api调用依赖于第一个api的结果 我对执行此操作的最佳方法以及使用块 订阅和平面地图之间的区别有点困惑 所有这 3 种方法都适合我 但我不确定哪一种是最好的 这就是我目前所拥有的 web
  • 如何从 CLI 调用 gnuplot 并将输出图形保存到图像文件?

    我正在编写一个批处理文件 该文件还将从 dat 文件生成 gnuplot 图 我希望使用我编写的 gnuplot gnu 脚本从命令行调用 gnuplot 并将输出图形保存到图像中 就像是 gnuplot exe script gnu gt
  • 有人知道 eclipse 的共享待办事项列表插件吗

    有谁知道 Eclipse 的共享 TODO 列表插件允许开发团队中的所有用户查看和编辑相同的任务列表 Mylyn http www eclipse org mylyn 可用于将问题跟踪系统集成到 IDE 中 它通过使任务成为 Eclipse
  • 使用 Macro_rules 中的可选数据表示枚举变体

    我正在尝试创建一个宏来帮助处理我一直在重复编写的一些样板枚举代码 我设法使用基本的方法相对轻松地实现了一个简单的枚举 即没有参数 macro rule 例如摘录 macro rules enum helper type ident name
  • 是否可以恢复损坏的“interned”字节对象

    众所周知 小bytes 对象由 CPython 自动 驻留 类似于intern https docs python org 3 library sys html sys intern 字符串函数 更正 As 解释了 https stacko
  • Project Reactor 中的预取是什么意思?

    我正在使用 Project Reactor 并且正在使用Flux flatMapIterable https projectreactor io docs core release api reactor core publisher Fl
  • 将 Webpack 与 HTTP/2 结合使用有什么价值

    我正在开始一个新项目 并且我正在尝试前瞻性地思考它 我过去使用过 Browserify 对于我的新项目 我想使用 Webpack Rollup 或 SystemJS Webpack 看起来是迄今为止最成熟的 具有大量出色的功能 不过 我担心
  • 从 C# 中的接口创建对象

    仅给定一个接口 是否可以从中创建一个对象 就像是 var obj new IWidget 我知道这段代码是不正确的 VS 仍然无法创建 IWidget 的实例 我所处的上下文中 我的项目引用了接口 并且我想创建具体对象并从方法返回它们 但我
  • anaconda如何选择cudatoolkit

    我有多个 anaconda 环境 上面安装了不同的 cuda 工具包 环境1有cudatoolkit 10 0 130 环境2有cudatoolkit 10 1 168 环境3有cudatoolkit 10 2 89 我通过运行找到了这些c
  • 空样式 (.css/.scss) 文件

    当我创建 Angular 应用程序时 我使用 CLI 来生成组件 在开发应用程序一段时间后 我为每个组件都有样式文件 但其中大部分是空的 当我检查声纳时 空样式文件中有代码气味 删除这个空样式表 在此文件末尾添加一个空的新行 我应该删除声纳
  • 重定向到用户登录后尝试访问的页面

    一直在阅读一些内容来找到答案 但运气不太好 我有一个网站 成员可以匿名浏览该网站 但某些页面受到限制 一旦成员单击需要登录才能查看的链接 我就会将其重定向到登录页面 我面临的问题是我不知道如何将会员重定向到他们登录后试图访问的页面 他们试图
  • JavaScript 图像缩放与 CSS3 变换,如何计算原点? (举例)

    我正在尝试实现图像缩放效果 有点类似于 Google 地图的缩放效果 但具有固定位置图像网格 我已经在这里上传了到目前为止我所拥有的示例 http www dominicpettifer co uk Files MosaicZoom htm