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 变换,如何计算原点? (举例) 的相关文章

  • 使用 ES6 `import` 语法时出现“无法解析符号”

    Here http www qimingweng com react modal dialog 给出了如何从模块导入某些类的示例 import ModalContainer ModalDialog from react modal dial
  • 具有列顺序的响应式多列列表

    我正在尝试创建一个有序的多列列表 但正在努力解决 CSS 网格布局规则 期望的结果应该是响应式的 在小屏幕上有 2 个网格列 在较大的屏幕上最多有 4 个网格列 同时保持列顺序 而不是像这样排序 1 2 3 4 5 6 7 8 9 10 1
  • NestJS:使用 JWT 将验证选项添加到 AuthGuard

    我正在尝试利用AuthGuard装饰器和护照 JWT 策略 遵循文档 https docs nestjs com techniques authentication 文档中的所有内容都运行良好 但我现在想保护 JWT 中包含的范围的路由 这
  • NodeJS 中的 uglify-js“找不到模块”

    在这里我正在创建应用程序来压缩 javascript 文件 我所做的步骤 在我的本地机器上安装了nodeJS 检查节点和 npm 正在工作 通过 npm install uglify js g 安装 uglify js 并安装 当我尝试在命
  • 没有 ssl 的 Web 加密 API

    我编写了一个用于安全消息传输的小网络应用程序 以了解有关加密的更多信息 并想向我的朋友展示它并让他们玩一下 所以我将它托管在我的小服务器上 并惊讶地发现 Web Crypto API 我竭尽全力开始工作 因为它的错误消息不是很具体 需要 S
  • 从 Google 电子表格中的列填充 HTML 下拉菜单

    我是 gs 的新手 所以这应该不难 我有一个 Google 电子表格 其中一列中有值 假设 A 列 我使用 gs 创建了一个自定义菜单 用户将在其中选择一个选项 单击其中一个选项 新组件 将出现一个弹出窗口 其中包含一个下拉菜单 用户应从其
  • 下拉菜单将导航栏向下推。如何避免呢?

    我是引导程序和网络开发的新手 我想构建一个具有两个导航栏的网页 并且根据屏幕尺寸 仅显示一个导航栏 对于屏幕尺寸 gt 768px 一切工作正常 至少看起来 对于较低的分辨率 下拉菜单将导航栏向下推到内容上方 如何避免这种情况 任何形式的帮
  • 图像映射区域周围不需要的边框

    我正在使用带有圆形区域的图像贴图 问题是我在 IE7 中的区域周围出现了不需要的边框 此边框不会出现在 FF 和 Chrome 中 也不会出现在 IE8 IE9 中 我尝试向图像添加 border 0 锚点的 css 属性 即 a bord
  • Material UI Drawer设置背景色

    如何简单设置Material UI的背景色Drawer 尝试过这个 但不起作用
  • React this.setState 不是一个函数

    尝试编写使用第 3 方 API 的应用程序时不断收到此错误 类型错误 this setState 不是一个函数 当我尝试处理 API 响应时 我怀疑这个绑定有问题 但我不知道如何修复它 这是我的组件的代码 var AppMain React
  • Lua 的标准(或最好支持的)大数(任意精度)库是什么?

    我正在处理大量无法四舍五入的数字 使用 Lua 的标准数学库 似乎没有方便的方法来保持精度超过某些内部限制 我还看到有几个库可以加载以处理大数字 http oss digirati com br luabignum http oss dig
  • 两列宽度可变且它们之间的间隙固定

    我需要动态设置两列的样式 它们各自的宽度应为 50 但它们之间的固定间隙为 10px 当我折叠菜单时 列应加宽至可用空间 并且间隙应保持 10 像素 因此 列不能采用固定宽度 我试过这个 container background red w
  • 为什么onClick下一个视频函数,使用YouTube JavaScript Player API,质量下降到默认?

    我在 CodeIgniter 上遇到了这个问题 使用 next video API 函数 单击按钮时新视频的质量比以前的低 所以基本上第一个视频始终处于我建议的质量 而下一个始终处于默认质量 On my template我有这个div di
  • CSS 3 nth 类型仅限于类 [重复]

    这个问题在这里已经有答案了 有没有办法限制 CSS 3nth of type去上课 我有一个动态数量section具有不同类别的元素指定其布局需求 我想抓住三分之一 module 但似乎nth of type查找类元素类型 然后计算类型 相
  • 无需递归即可展平多个嵌套数组的数组 - javascript

    也许这是一个愚蠢的问题 但我无法意识到是否可以在不使用递归的情况下展平多维数组 我用递归编写了一种解决方案 function transform arr var result arr forEach flatten function fla
  • 淡出图像上的文字

    我知道如何使用 CSS 透明渐变淡出纯色背景上的文本 但是如何才能淡出图像背景上的文本呢 这是我想要的一个例子 注意 我需要像图像一样的静态效果 而不是动态过渡 CSS mask image可能是您正在寻找的 div background
  • 单击按钮滚动到特定 div

    我有一个具有固定菜单和内容框 div 的页面 单击菜单时 内容框滚动到特定 div 到目前为止 一切都很好 这是这里的示例 https jsfiddle net ezrinn 8cdjsmb9 11 https jsfiddle net e
  • 将复杂对象传递给 ui-sref 参数

    我需要这样的构建网址 列表 过滤器 状态 1 过滤器 类型 2 I do link a List a 在参数中传递复杂对象 如果传递简单对象 filter 1 可以 但我需要这个 state state list url list filt
  • Mongoose - 遍历对象

    在 node js 上使用 mongoose 我试图找到玩家 game players id 等于我传递的 id 的所有游戏 Schema var Game mongoose Schema id String date type Date
  • 如何在 Javascript 中检测网络丢失?

    我的 Web 应用程序适用于多种手持设备 例如 iPad Galaxy 选项卡等 应用程序从服务器请求图像并在客户端上呈现 现在的问题有时会发生 在图像渲染过程中网络连接会丢失 而不是在设备上显示 html 无图像图标时 我想优雅地处理这种

随机推荐

  • 为什么这段代码会抛出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